当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


GO WithValue用法及代码示例


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

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 WithValue。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。