問題 Go言語はinterfaceによる型の制約ができる。逆にinterfaceで宣言したメソッドをすべて満たすいかなるstructもそのinterfaceを満たすものとして扱える。いわゆるダックタイピング。 参考 ダックタイピングって一体なんなのよ【golang】 - DRYな備忘録 で、interfaceを満たすstructを定義したつもりが「インターフェース実装できてないよ!そのメソッドはポインターを取らなきゃ!」と叱られる。 原文(これはうごかない) package main type Greeter interface { Greet() } type Person struct { name string } func (p *Person) Greet() { println("Hi! I'm ", p.name) } func GetGreeterByName(name s