-1
このコードを見てください。ポインタでインターフェイスを実装する
type moninterface2 interface {
methode_commune(a,b int) int
}
type classe1 struct {
a, b int
}
type classe2 struct {
c, d int
}
func (r classe1) methode_commune(a,b int) int {
return a+b
}
func (r classe2) methode_commune(a,b int) int {
return a*b
}
func fonctiontest(param moninterface2) {
ret := param.methode_commune(2,3)
fmt.Println(ret)
}
をしかし、私はこのようmethode_commune
を宣言した場合::すべてが正常に動作します
func (r *classe1) methode_commune(a,b int) int
func (r *classe2) methode_commune(a,b int) int
Goがclasse1
を考慮しないとclasse2
がmoninterface2
実装し、コードがコンパイルされません。私はなぜなのか理解していない。
受け取ったコンパイルエラーは何ですか?それはおそらくあなたに理由を教えてくれるでしょう。 – Flimzy
それは私のためにコンパイルします。詳細を教えていただけますか? https://play.golang.org/p/hUCFWu5tl1 –
単なる値の代わりにポインタを渡してください。例えば。 'fonctiontest(&classe1 {})'は正常です、 'fonctiontest(classe1 {})'は** not ** okです。 – mkopriva