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)
}