package main
import (
"fmt"
)
type animal interface {
speak()
}
type dog struct {
name, sound string
}
type cat struct {
name, sound string
}
func (d dog) speak() {
fmt.Println(d.name, " goes ", d.sound)
}
func (c cat) speak() {
fmt.Println(c.name, " goes ", c.sound)
}
func animal_speak(a animal) {
fmt.Println(a.speak())
}
func main() {
dogo := dog{"scooby", "woof"}
cato := cat{"garfield", "meow"}
animal_speak(dogo)
animal_speak(cato)
}
当我调用动物界面时,它会给我以下错误
./interface.go:28:21:a.speak()用作值
我究竟做错了什么?
该接口不用作值。您正在使用一个函数调用,它不返回任何值。
speak()
什么都不返回...所以你期望它打印什么?
由于您正在打印speak方法的输出,因此您的speak方法需要返回一个字符串或一个对象,其字符串表示将打印您想要查看的字符串。这是你的程序修改https://play.golang.org/p/VDsp0cjXBd-返回一个字符串。