AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
[TOC] ## **1.概述** `context`,专门用来简化对于处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作。 对服务器传入的请求应该创建上下文,而对服务器的传出调用应该接受上下文。它们之间的函数调用链必须传递上下文,或者可以使用`WithCancel`、`WithDeadline`、`WithTimeout`或`WithValue`创建的派生上下文。当一个上下文被取消时,它派生的所有上下文也被取消。 ## **2.Contex接口** ~~~ type Context interface { Deadline() (deadline time.Time, ok bool) Done() <-chan struct{} Err() error Value(key any) any } ~~~ * Deadline方法返回当前Context被取消的时间,也就是完成工作的截止时间; * Done方法返回一个Channel,这个Channel会在当前工作完成或者上下文被取消之后关闭,多次调用Done方法会返回同一个Channel; * Err方法返回当前Context结束的原因,它只会在Done返回的Channel被关闭时才会返回非空的值; * 如果当前Context被取消机会返回Canceled错误; * 如果当前Context超时就会返回DeadlineExceeded错误; * Value方法会从Context中返回键对应的值,多次调用Value并传入相同的Key会返回相同的结果。