我正在关注gcloud sdk的官方go
documentation。
作为第一步,我正在尝试实例化cloudresourcemanager
服务。
我似乎无法理解(也许是我在go
上下文中的背景不佳)是为什么需要context
来实例化这种服务,如官方用法示例所示:
import "google.golang.org/api/cloudresourcemanager/v1"
...
ctx := context.Background()
cloudresourcemanagerService, err := cloudresourcemanager.NewService(ctx)
除非我想念某事,否则文档不会对此进行详细介绍。
答案 0 :(得分:0)
根据 Go documentation:
在Go服务器中,每个传入请求均以自己的方式处理 goroutine 。请求处理程序通常会启动其他goroutine来访问后端,例如数据库和RPC服务。
处理请求的goroutine集合通常需要访问 特定于请求的值,例如最终用户的身份,授权令牌和请求的截止日期。当一个请求是 取消或超时,所有处理该请求的goroutine 应该迅速退出,以便系统可以回收它们所占用的任何资源 使用。
上下文包可轻松传递请求范围的值, 取消信号,以及所有API边界上的截止日期 涉及处理请求的goroutine。
context.Background()是任何上下文树的根:
Background返回一个非null的空上下文。它永远不会被取消,已经 没有期限,也没有价值。背景通常用于主体, 初始化和测试,并作为传入请求的顶级上下文。