Go言語(golang)にはポインタとインターフェースがありますが、「インターフェースへのポインタ」で渡す必要があるのかどうか。
結論から言うと、インターフェースはインスタンスへの参照を持っているのでインターフェースへのポインタを渡す必要はありません。
以下の例では、serveFoodメソッドにインターフェースで渡していますが、元のインスタンスが変更されていることが分かります。
http://play.golang.org/p/M6is2Gpe0B
package main
import "fmt"
type Animal interface {
Eat()
}
type Human struct {
Vital string
}
func (h *Human) Eat() {
h.Vital = "full"
}
func main() {
a := &Human{"empty"}
serveFood(a)
fmt.Printf("vital is %s", a.Vital)
}
func serveFood(a Animal) {
a.Eat()
}
実行結果
vital is full
Program exited.
まあ、インターフェースの値って何なのか考えてみれば明らかだと思いますが、ポインタに不慣れな人には理解が難しいところかもしれません。
参考