下記のプログラムがエラーになる理由を知りたいと思っています。
(Go Playground => https://play.golang.org/p/6vEfSxyiIy8)
go
1package main 2 3type InterfaceA interface { 4 Child() InterfaceA 5} 6 7type StructA struct { 8 child *StructA 9} 10 11func (s *StructA) Child() *StructA { 12 return s.child 13} 14 15func main() { 16 var _ InterfaceA = &StructA{} 17}
エラー内容はこちらです。
./prog.go:16:6: cannot use &StructA literal (type *StructA) as type InterfaceA in assignment:
*StructA does not implement InterfaceA (wrong type for Child method)
have Child() *StructA
want Child() InterfaceA
*StructAのChild()関数の戻り値型を InterfaceA に変更すれば動くということは分かっていますが、
なぜ戻り値型が *StructA の場合にエラーとなる仕様なのか、背景を知りたいと思っています。
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/10/19 01:11 編集
2019/10/19 01:33
退会済みユーザー
2019/10/19 01:43
2019/10/19 04:19