1. type Context interface {
    2. Deadline() (deadline time.Time, ok bool)
    3. Done() <-chan struct{}
    4. Err() error
    5. Value(key interface{}) interface{}
    6. }
    1. Deadline,第一个出参 获取设置的截至时间点,第二个参数表示是否设置截至时间点
    2. Done,返回一个通道,如果这个通道可读,代表Context已经发起了取消,说白了这是一个信号传递,当从Done中能够读取出数据时,就该做一些工作了
    3. Err,返回Context取消的原因
    4. Value(key),返回Context的绑定的值,就是根据Key获取Value

    Context 的调用应该是链式的,通过WithCancelWithDeadlineWithTimeoutWithValue派生出新的 Context。当父 Context 被取消时,其派生的所有 Context 都将取消

    1. func Background() Context
    2. func TODO() Context
    3. func WithCancel(parent Context) (ctx Context, cancel CancelFunc)
    4. func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc)
    5. func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)
    6. func WithValue(parent Context, key, val interface{}) Context

    使用场景:

    1. 全链路服务,日志追踪,记录
    2. 客户端,服务端方法调用超时控制
    3. 跨进程间延迟,取消信号,截至时间