《零基础Go语言算法实战》【题目 2-16】接口的实现
《零基础Go语言算法实战》
【题目 2-16】接口的实现
下面的代码是否可以编译通过?为什么?
package main
import (
"fmt"
)
type Animal interface {
Call(string) string
}
type Cat struct{}
func (cat *Cat) Call(sound string) (barking string) {
if sound == "dog barking" {
barking = "woof"
} else {
barking = "meow"
}
return
}
func main() {
var a Animal = Cat{}
sound := "meow"
fmt.Println(a.Call(sound))
}
【解答】
编译失败,值类型 Cat{} 未实现接口 Animal 的方法,不能定义为 Animal 类型。在 Go 语
言中,Cat 和 *Cat 是两种类型,前者表示 Cat 本身,后者表示指向 Cat 的指针。