ZBLOG

golang 中的context 如何使用

在Go语言中,context.Context用于传递请求范围的上下文信息,并且可以控制请求的取消和超时。以下是使用context.Context的基本示例:

  1. 创建一个根上下文:使用context.Background()函数创建一个根上下文。
  1. ctx := context.Background()
  1. 创建一个带有取消功能的上下文:使用context.WithCancel(parent)函数创建一个可被取消的子上下文。
  1. parentCtx := context.Background()
  2. ctx, cancel := context.WithCancel(parentCtx)
  3. defer cancel() // 及时释放资源,防止内存泄漏
  1. 使用上下文传递值:使用context.WithValue(parent, key, value)函数创建带有值的子上下文,并通过键值对进行传递。
  1. type key string
  2. value := "Hello, World!"
  3. k := key("myKey")
  4. ctx := context.WithValue(parentCtx, k, value)
  5. // 在其他地方获取该值
  6. v := ctx.Value(k).(string)
  7. fmt.Println(v) // 输出: Hello, World!
  1. 控制超时和取消操作:使用context.WithTimeout(parent, timeout)函数设置上下文超时时间,当到达指定时间后,自动取消上下文。
  1. timeoutDuration := 5 * time.Second
  2. ctx, cancel := context.WithTimeout(context.Background(), timeoutDuration)
  3. defer cancel() // 及时释放资源,防止内存泄漏
  4. select {
  5. case <-time.After(10 * time.Second):
  6. fmt.Println("完成任务")
  7. case <-ctx.Done():
  8. fmt.Println(ctx.Err()) // 上下文超时或被取消
  9. }

通过使用context.Context,可以更好地控制和传递上下文信息,并实现请求的超时和取消操作。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=11073

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?