跳转到主要内容

【Go语言开发】如何在 Go 中使用上下文

介绍


在开发大型应用程序时,尤其是在服务器软件中,有时除了函数独立运行所需的信息之外,了解更多关于它正在执行的环境的信息是有帮助的。例如,如果 Web 服务器函数正在处理特定客户端的 HTTP 请求,则该函数可能只需要知道客户端请求哪个 URL 来提供响应。该函数可能只将该 URL 作为参数。但是,在提供响应时总是会发生一些事情,例如客户端在收到响应之前断开连接。如果提供响应的函数不知道客户端已断开连接,则服务器软件最终可能会花费比计算永远不会使用的响应所需的更多计算时间。

在这种情况下,了解请求的上下文,例如客户端的连接状态,允许服务器在客户端断开连接后停止处理请求。这可以在繁忙的服务器上节省宝贵的计算资源,并释放它们来处理另一个客户端的请求。这种类型的信息在函数执行需要时间的其他上下文中也很有帮助,例如进行数据库调用。为了使对此类信息的普遍访问成为可能,Go 在其标准库中包含了一个上下文包。

在本教程中,您将首先创建一个在函数中使用上下文的 Go 程序。然后,您将更新该程序以在上下文中存储附加数据并从另一个函数中检索它。最后,您将使用上下文的能力来表示它已完成以停止处理其他数据。

先决条件