概述
package main
import (
"fmt"
"sync"
)
type listener string
type Status struct{
ID string
Err error
}
// test map lock safety
func main() {
listeners := make([]listener, 0)
listeners = append(listeners, "listener 1")
listeners = append(listeners, "listener 2")
listeners = append(listeners, "listener 3")
listeners = append(listeners, "listener 4")
wg := sync.WaitGroup{}
wg.Add(len(listeners))
statusCh := make(chan Status, len(listeners))
for i := range listeners {
func(lis listener, wg *sync.WaitGroup){
defer wg.Done()
status := Status{}
status.ID, status.Err = lis.Apply()
statusCh <- status
}(listeners[i], &wg)
}
wg.Wait()
close(statusCh)
}
func (lis listener) Apply() (listenerID string, err error){
fmt.Printf("listener apply success for:%s n", lis)
return fmt.Sprintf("LisID-%s", lis),nil
}
最后
以上就是谨慎万宝路为你收集整理的go channel waitgroup的全部内容,希望文章能够帮你解决go channel waitgroup所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复