我有一个定义方法的接口。我有一个结构实施这个界面。在其中,我实现了该接口中的方法,并且还定义了其他方法。
例如:
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()
}
在操场上:https://play.golang.org/p/B1GgoNToNl_l https://play.golang.org/p/B1GgoNToNl_l
这里,WagTail() 不是 Animal 接口的一部分,而是属于 Dog 结构。运行此代码会出现错误
dog.WagTail 未定义(Animal 类型没有字段或方法 WagTail)。
有没有办法让结构遵守接口并定义它自己的方法?
这可能对你有帮助。
d := dog.(*Dog)
d.WagTail()
在操场上:https://play.golang.org/p/KlNqpmvFTJi https://play.golang.org/p/KlNqpmvFTJi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)