我是靠谱客的博主 谨慎万宝路,最近开发中收集的这篇文章主要介绍go channel waitgroup,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部