我需要从多个 go 例程中获取响应并将它们放入一个数组中。我知道通道可用于此目的,但我不确定如何确保所有 go 例程都已完成结果处理。因此我正在使用等待组。
代码
func main() {
log.Info("Collecting ints")
var results []int32
for _, broker := range e.BrokersByBrokerID {
wg.Add(1)
go getInt32(&wg)
}
wg.Wait()
log.info("Collected")
}
func getInt32(wg *sync.WaitGroup) (int32, error) {
defer wg.Done()
// Just to show that this method may just return an error and no int32
err := broker.Open(config)
if err != nil && err != sarama.ErrAlreadyConnected {
return 0, fmt.Errorf("Cannot connect to broker '%v': %s", broker.ID(), err)
}
defer broker.Close()
return 1003, nil
}
我的问题
如何将所有响应 int32(可能返回错误)放入我的 int32 数组,确保所有 go 例程都已完成处理工作并返回错误或 int?
繁花如伊
杨__羊羊
拉莫斯之舞
月关宝盒
相关分类