タイトルのとおりです。子クラスでは親クラスを継承しています。ですので、Callメソッドで親クラスのフィールドやメソッドを使用したいです。ただ、エラーが発生します。interface型を使えばHelloメソッドを持っているのは対応できますが、フィールドまでは対応できません。それぞれにアクセッサ−を定義してInterfaceを新たに作って、メソッドベース対応するしかないのでしょうか?よろしくお願いいたします。
go
1package main 2 3import ( 4 "fmt" 5) 6 7type Base struct { 8 Name string 9} 10 11func (*Base) Hello(name string) { 12 fmt.Println(name) 13} 14 15type Sub struct { 16 Base // Sub extends Base 17} 18 19func Call(b *Base) { 20 b.Hello(b.Name) 21 22} 23 24func main() { 25 s := &Sub{} 26 Call(s) // prog.go:24:6: cannot use s (type *Sub) as type *Base in argument to Call 27 28}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。