Value Context
主要用于在各 Goroutine 之间传递一些数据。
在当前Goroutine查询不到数据时,会向其父节点查询,一直到根节点
示例
package main
import (
"fmt"
"time"
"context"
)
func HandelRequest(ctx context.Context) {
for {
select {
case <-ctx.Done(): // 注意此处永远不会执行,因为 ctx 是一个Value Context,其没有 Cancel 实现
fmt.Println("HandelRequest Done.")
return
default:
fmt.Println("HandelRequest running, parameter: ", ctx.Value("parameter"))
time.Sleep(2 * time.Second)
}
}
}
func main() {
ctx := context.WithValue(context.Background(), "parameter", "1")
go HandelRequest(ctx)
time.Sleep(10 * time.Second)
}