背景 链接到标题 前段时间在写 Cluster API Provider 的时候,经常会使用 context 传递参数,当时只是按照其他项目中的方式快速的实现,并没有认真的了解 context 具体包含什么,为了解决什么问题,这次来聊一下。
P.S. 虽然写了一周的 Golang,但是对于标准库有什么还一无所知,找时间应该认真过一遍的。。
定义与使用 链接到标题 先看定义:
Package context defines the Context type, which carries deadlines, cancellation signals, and other request-scoped values across API boundaries and between processes.
当一个 goroutine 调用其他 goroutine,随着层级变多,我们想要在外层达到控制的效果 在必要场景下传递 必需 的数据 其中 Context 这个 interface 中定义了 4 个方法,具体如下:
type Context interface { Deadline() (deadline time.Time, ok bool) Done() <-chan struct{} Err() error Value(key interface{}) interface{} } 在 context 包中实现了4个函数,平时也都是使用这些函数: