type Animal interface {
// 这里可以嵌入(或者说组合)别的接口
speak()
big() bool
}
// struct 中只定义成员变量 interface 只定义方法
// 在外面定义了interface 中所有的方法后就可看做实现了interface这就是ducktype
// duck_type 实现了这个接口的所有方法就是这个接口(走起来是鸭子叫起来是鸭子那就就是鸭子)
type Bird struct {
words string
isBig bool
}
func (bird Bird) speak(){
fmt.Println(bird.words)
}
func (bird Bird) big() bool{
return bird.isBig
}
func talk(animal Animal) {
animal.speak()
}
func main() {
var bird Animal
bird = Bird{"I'm a bird", false}
talk(bird)
}