🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ### OverView context包实现了在程序单元之间共享状态变量的方法,同时能通过简单的方法,使我们在被调用程序单元的外部,通过设置ctx变量值,将过期或撤销这些信号传递给被调用的程序单元。若存在A调用B的API,B再调用C的API,若A调用B取消,那也要取消B调用C,通过在A, B, C的API调用之间传递Context,以及判断其状态。 ` ` Context结构 ``` // Context包含过期,取消信号,request值传递等,方法在多个goroutine中协程安全 type Context interface { // Done 方法在context被取消或者超时返回一个close的channel Done() <-chan struct{} Err() error // Deadline 返回context超时时间 Deadline() (deadline time.Time, ok bool) // Value 返回context相关key对应的值 Value(key interface{}) interface{} } ```