for _, cg := range consumers {
		log.Logger.Infof("%p", cg)
		utils.SafeGo(func() {
			log.Logger.Infof("%#v", cg)
			log.Logger.Infof("%p", cg)
			StartConsumer(ctx, cfg.Endpoint, cfg.AccessKey, cfg.SecretKey, cg)
		})
	}

输出:

0xc000683540
0xc000683560
&queue.Test2{groupName:"test2"}
&queue.Test2{groupName:"test2"}
0xc000683560
0xc000683560

consumers 包含两个元素,值都是指针。 1.22 版本开始 range 每次不是会创建新变量了吗?为什么我 SafeGo 里面 cg 拿到的还是最后一个的值?

举报· 206 次点击
登录 注册 站外分享
1 条回复  
fireice 初学 5 天前
用匿名函数的参数传进去就 ok 了
返回顶部