私がやろうとしていること: 私はいくつかの構造体型を持っています。それらはすべて同じインターフェースを実装しており、メソッドを宣言しています。
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()
// ...
ここで、これらのインスタンスを受け取り、それらのそれぞれで Process() メソッドを呼び出すジョブと、それを回避するいくつかのメタワークを実行する「ProcessAll()」関数が必要です。
これが私が作成しようとしているコードの種類ですが、この特定のスニペットは、方法がわからないため機能しません。
func ProcessAll(objs []*Worker) {
for _, obj := range objs {
obj.Process()
}
}
ProcessAll([]*Worker{o1, o2, /* ... */})
そのようなことはgoで達成できますか?もしそうなら、どうすれば実装できますか?