4 ms·
> 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 “sub
by catnaroek 10y ago
> 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.
- aikah 10y agoIt 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.
- catnaroek 10y ago> 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/InheritanceSubtyping90/CookPOPL90.pdf http://www.cs.utexas.edu/~wcook/papers/InheritanceSubtyping9... [1] http://stackoverflow.com/a/23592298/46571 http://stackoverflow.com/a/23592298/46571