我有一个定义方法的接口。我有一个实现这个接口的结构。在其中,我实现了该接口中的方法,并且还定义了其他方法。
例如:
package main
import (
"fmt"
)
type Animal interface {
MakeNoise()
}
type Dog struct {
color string
}
/* Interface implementation */
func (d *Dog) MakeNoise() {
fmt.Println("Bark!")
}
/* End Interface implementation */
func (d *Dog) WagTail() {
fmt.Println(d.color + " dog: Wag wag")
}
func NewDog(color string) Animal {
return &Dog{color}
}
func main() {
dog := NewDog("Brown")
dog.MakeNoise()
dog.WagTail()
}
Run Code Online (Sandbox Code Playgroud)
在游乐场上:https ://play.golang.org/p/B1GgoNToNl_l
这里,WagTail() 不是 Animal 接口的一部分,而是属于 Dog 结构。运行此代码会出现错误
dog.WagTail 未定义(Animal 类型没有字段或方法 WagTail)。
有没有办法让结构遵守接口并定义它自己的方法?
小智 5
这可能对你有帮助。
d := dog.(*Dog)
d.WagTail()
Run Code Online (Sandbox Code Playgroud)
在游乐场上: https: //play.golang.org/p/KlNqpmvFTJi