并发篇
在golang中有三种并发控制方式:waitGroup、Context及channel。waitGroup适用于多goroutine执行一个任务场景,channel可以用于并发协程优雅退出,但若有多个groutine都需要退出?如果这些goroutine又衍生出了其他goroutine呢,此时就需要使用context;
context使用规则
不要把context放入结构体中,要以参数形式传递
context以参数传递,需要放到函数中第一位
给函数传递context时不要传入nil,如果不知道传递什么,使用context.TODO
context的Value相关方法应该传递必须的数据,不要什么数据都是用这个数据传递
context是线程安全的,可以放在多个goroutine中传递