比方说,我们有一个接口和一些实现其方法的结构,因此在main方法中,我们可以通过键入其名称在接口片中对其进行调用。
所以我的问题是我们如何才能获得实现Animal接口的所有结构,因此我不需要对每个结构的名称进行硬编码?
package main
import (
"fmt"
)
type Animal interface {
Speak() string
}
type Dog struct {
}
func (d *Dog) Speak() string {
return "Woof!"
}
type Cat struct {
}
func (c *Cat) Speak() string {
return "Meow!"
}
func main() {
animals := []Animal{ &Dog{}, &Cat{} }
for _, animal := range animals {
fmt.Println(animal.Speak())
}
}