我希望下面的代码允许我混合类型并通过它们的接口取回它们(也许可以吗?),但是显然不起作用。如果不使用像反射这样的东西(在频繁使用的循环中可能会很昂贵),有没有办法实现我在这里尝试的东西?我是否需要为要存储的每种类型分别列出清单?代码:package mainimport ( "fmt" "container/list")type Updater interface { Update()}type Cat struct { sound string}func (c *Cat) Update() { fmt.Printf("Cat: %s\n", c.sound)}type Dog struct { sound string}func (d *Dog) Update() { fmt.Printf("Dog: %s\n", d.sound)}func main() { l := new(list.List) c := &Cat{sound: "Meow"} d := &Dog{sound: "Woof"} l.PushBack(c) l.PushBack(d) for e := l.Front(); e != nil; e = e.Next() { v := e.Value.(*Updater) v.Update() }}错误:prog.go:38: v.Update undefined (type *Updater has no field or method Update)游乐场:http://play.golang.org/p/lN-gjogvr_
1 回答
- 1 回答
- 0 关注
- 201 浏览
添加回答
举报
0/150
提交
取消