私は関数の引数でインタフェースに問題があります。関数のインターフェイスをどのように使用しますか?ここで、引数は別のインターフェイスで、同じ関数リストを持っていますか?
package main
import (
"fmt"
)
type A interface {
New() A
B()
C()
}
type B interface {
New() B
B()
}
type AS struct {}
func (AS) New() A {
return AS{}
}
func (AS) B() {}
func (AS) C() {}
func Hello(b B) {
b.New()
}
func main() {
fmt.Println("Hello, playground")
as := AS{}
a := A(as)
Hello(a)
}
私はこのエラーを持っている:
tmp/sandbox293137995/main.go:35: cannot use a (type A) as type B in argument to Hello:
A does not implement B (wrong type for New method)
have New() A
want New() B
私は機能のHelloでインタフェースAを使用したい場合、私は、このコードをリファクタリングすることができますどのように? ありがとう!
インタフェース上で 'New()'メソッドを使用する目的は何ですか?それはまったく意味をなさないわけではありません、そして、それはあなたのエラーが原因です。 – Gavin
Goに古典的なOOPを再現しようとしないでください。あなたは自分を傷つけるでしょう。 – Volker