本文主要是介绍golang context笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
context
type Context interface {Deadline() (deadline time.Time, ok bool)Done() <-chan struct{}Err() errorValue(key interface{}) interface{}
}
- Deadline:返回的第一个值是 截止时间,到了这个时间点,Context 会自动触发 Cancel 动作。返回的第二个值是 一个布尔值,true 表示设置了截止时间,false 表示没有设置截止时间,如果没有设置截止时间,就要手动调用 cancel 函数取消 Context。
- Done:返回一个只读的通道(只有在被cancel后才会返回),类型为 struct{}。当这个通道可读时,意味着parent context已经发起了取消请求,根据这个信号,开发者就可以做一些清理动作,退出goroutine。
- Err:返回 context 被 cancel 的原因。
- Value:返回被绑定到 Context 的值,是一个键值对,所以要通过一个Key才可以获取对应的值,这个值一般是线程安全的。
使用场景
一般用ctx来关闭协程。 请求超时取消等。
简单的例子
使用for select + chan 也可以处理,for select + ctx.Done处理起来更方便。
使用for select + chan 关闭g
这篇关于golang context笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!