go通过context.WithValue传递指针
文章目录
Go - Context: 信息穿透上下文
使用场景
- 上下文传递信息(request-scoped),比如处理http请求、在请求处理链路上传递信息;
- 控制子goroutine的运行;
- 超时控制的方法调用(timeout);
- 可以取消的方法调用(cancel);
WithValue-传递上下文
以下是传递上下文方式
WithValue-通过透传指针参数(ctx.Value的值需要变化)
context通过透传指针参数可便于函数内外部修改与接收
应用场景: (ctx.Value的值需要变化)
- 外部修改ctx.Value的值: 内部可以获取参数的值改变(比如需提前cancel并需改变某个透传的值)
- 内部修改ctx.Value的值: 外部可以获取参数的值改变(内部执行到某位置并修改了透传的值)