News for hackers. Stuff that matters.
Re:Golang concepts from an OOP point of view by catnaroek on Wednesday September 14, 2016 @08:56AM (#12496336)
> What you described is not inheritance. If you pass your "inherited" type to a function that expect the "parent" type it will not compile.

That is called “subtyping”, not “inheritance”. Java and C++ happen to conflate the two concepts, but it's perfectly possible to keep them separate.

> There is no subtying whatsoever in Go to begin with.

A struct is a subtype of every interface its methods are compatible with.

Re:Golang concepts from an OOP point of view by aikah on Wednesday September 14, 2016 @04:23PM (#12500926)
It doesn't really matter. Your suggestion is worthless in practice with Go since "your subtype" doesn't enable polymorphism. you can't pass your "subtype" to a function that expect the parent type. You can absolutely pass a sub class in place of a class in a method expecting the class in Java. See the difference ? what you suggested makes absolutely no sense in Go. That's not even subtyping, you just created another struct type with composition.
Re:Golang concepts from an OOP point of view by catnaroek on Wednesday September 14, 2016 @06:50PM (#12501878)
> It doesn't really matter. Your suggestion is worthless in practice with Go since "your subtype" doesn't enable polymorphism.

I never said that struct embedding creates a subtype. I said that it can be used to emulate inheritance (subclassing). Inheritance and subtyping are very different things, and the fact languages like Java and C++ conflate them actually creates several problems. See:

[0] http://www.cs.utexas.edu/~wcook/papers/InheritanceSubtyping9...

[1] http://stackoverflow.com/a/23592298/46571