关于errMap

来源:5-5 task示例的实现

remembers

2020-03-27

func VideoClearExecutor(dc dataChan) error {
	errMap := &sync.Map{}
	
	// ......
	
	errMap.Range(func(k, v interface{}) bool {
		err = v.(error)
		if err != nil {
			return false
		}
		return true
	})
	
	// ......
}

艾文西老师,我感觉把 errMap 挪到函数体外作为包级变量使用好一些,

否则 errMap.Range 每次调用的都是局部创建的新的 errMap ,

那么之前的 goroutine 就算有 error 也不是往当前这个 map 里面写,

那么 errMap.Range 这段逻辑也就没什么用了。

写回答

1回答

艾文西

2020-03-28

没看懂,之前的goroutine肯定不会往这个map里写啊。

这个map就是捕捉当前的err而已

0
5
remembers
回复
艾文西
但是之前的goroutine还没来得及写err,Range执行完,然后函数退出了
2020-03-28
共5条回复

Go语言实战流媒体视频网站,高效学习Go高性能开发

从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能

996 学习 · 268 问题

查看课程