Go言語について
以下のようなソースがあるとします。
Go
1package main; 2import "fmt"; 3 4// 任意のインターフェース 5type MyInterface interface { 6 A(); 7} 8// 当該のインターフェースを実装した独自の構造体 9type MyStruct struct { 10 Name string; 11} 12func (my MyStruct) A() { 13 fmt.Println(my.Name); 14} 15 16func main () { 17 var mys MyStruct = MyStruct{Name: "独自構造体"}; 18 var myi MyInterface; 19 var myip MyInterface; // ---------※ 20 myi = &mys; 21 myip = &mys; 22 fmt.Println(myi); 23 fmt.Println(myip); 24} 25
上記のような場合はうまくコンパイルが通りますが、
Go
1package main; 2import "fmt"; 3 4// 任意のインターフェース 5type MyInterface interface { 6 A(); 7} 8// 当該のインターフェースを実装した独自の構造体 9type MyStruct struct { 10 Name string; 11} 12func (my MyStruct) A() { 13 fmt.Println(my.Name); 14} 15 16func main () { 17 var mys MyStruct = MyStruct{Name: "独自構造体"}; 18 var myi MyInterface; 19 var myip *MyInterface; // ---------※ 20 myi = &mys; 21 myip = &mys; 22 fmt.Println(myi); 23 fmt.Println(myip); 24} 25
上記の様に(※)の箇所の自作インターフェースをポインタとして宣言すると
コンパイルが通らなくなります。
この場合、どのような仕様だと理解したらよいでしょうか?
回答の前に複数の課題が含まれるのでまずはコンパイルが通らない時のメッセージを示してください。
回答1件
あなたの回答
tips
プレビュー