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...
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.