Type definitions do not inherit underlying type methods.
Compile Error: ./prog.go:17:3: b.Print undefined (type Bar has no field or method Print)
Go does not have traditional inheritance like other languages, therefore the alias type declaration
type Bar Foo works differently in Go. When you create a new type based on another type, your new type (
Bar) doesn’t inherit the methods from
Foo, which is why
This creates a new type
Bar, and embeds it with an implicit
Foo object. In this case, when you call a method on a
Bar object, it will check to see if
Bar has that method, and if it doesn’t, it will check
Foo for the method and use that.