GO语言"context"包中"WithValue"函数的用法及代码示例。
用法:
func WithValue(parent Context, key, val any) Context
WithValue 返回与 key 关联的值为 val 的 parent 副本。
仅将上下文值用于传递进程和 API 的 request-scoped 数据,而不用于将可选参数传递给函数。
提供的键必须是可比较的,并且不应该是字符串类型或任何其他内置类型,以避免使用上下文的包之间发生冲突。 WithValue 的用户应定义自己的 key 类型。为避免在分配给 interface{} 时进行分配,上下文键通常具有具体类型 struct{}。或者,导出的上下文键变量的静态类型应该是指针或接口。
例子:
这个例子演示了如何将一个值传递给上下文,以及如何在它存在时检索它。
package main
import (
"context"
"fmt"
)
func main() {
type favContextKey string
f := func(ctx context.Context, k favContextKey) {
if v := ctx.Value(k); v != nil {
fmt.Println("found value:", v)
return
}
fmt.Println("key not found:", k)
}
k := favContextKey("language")
ctx := context.WithValue(context.Background(), k, "Go")
f(ctx, k)
f(ctx, favContextKey("color"))
}
输出:
found value: Go key not found: color
相关用法
- GO WithDeadline用法及代码示例
- GO WithTimeout用法及代码示例
- GO WithCancel用法及代码示例
- GO Writer.Init用法及代码示例
- GO WordEncoder.Encode用法及代码示例
- GO WaitGroup用法及代码示例
- GO WordDecoder.Decode用法及代码示例
- GO Writer.WriteAll用法及代码示例
- GO WriteFile用法及代码示例
- GO WordDecoder.DecodeHeader用法及代码示例
- GO Writer.RegisterCompressor用法及代码示例
- GO WalkDir用法及代码示例
- GO Writer用法及代码示例
- GO WriteString用法及代码示例
- GO Write用法及代码示例
- GO Writer.AvailableBuffer用法及代码示例
- GO Walk用法及代码示例
- GO PutUvarint用法及代码示例
- GO Scanner.Scan用法及代码示例
- GO LeadingZeros32用法及代码示例
注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 WithValue。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。