我正在尝试做的事情:我有几种结构类型,它们都实现了相同的接口,它们声明了一个方法,比如“Process()”
type Worker interface {
Process()
}
type obj1 struct {
}
func (o *obj1) Process() {
}
// same with struct type obj2, obj3, ...
在整个代码中,我创建了这些结构的几个实例,然后我想在每个实例上调用进程。在每个上调用 Process() 都可以正常工作。
o1 := obj1.New()
o2 := obj1.New()
o3 := obj2.New()
o4 := obj3.New()
// ...
o1.Process()
o2.Process()
// ...
现在,我想要一个“ProcessAll()”函数,它将接收这些实例并完成对每个实例调用 Process() 方法的工作,以及一些围绕它的元工作。
这是我正在尝试生成的那种代码,但是这个特定的片段不起作用,因为我不知道该怎么做:
func ProcessAll(objs []*Worker) {
for _, obj := range objs {
obj.Process()
}
}
ProcessAll([]*Worker{o1, o2, /* ... */})
这种事情可以用 go 完成吗?如果可以,我该怎么做才能实现它?