首页 > 其他 > 详细

golang context携带值传递

时间:2021-05-20 15:34:12      阅读:26      评论:0      收藏:0      [点我收藏+]

golang context携带值传递

package main

import (
	"context"
	"fmt"

	"google.golang.org/grpc/metadata"
)

// 使用context.WithValue()和Value()方法获取值
func GetContextValue() {
	type key = struct{}
	ctx := context.Background()
	ctx = context.WithValue(ctx, key{}, "this is value")
	fmt.Printf("value: %v\n", ctx.Value(key{}))
}

// 使用了metadata.NewOutgoingContext传递数据,metadata.FromIncomingContext获取数据。
func GetContextWithMeta() {
	// client
	md := metadata.Pairs(
		"k1", "v1",
		"k2", "v2",
	)
	ctx := metadata.NewOutgoingContext(context.Background(), md)

	// server
	md2, ok := metadata.FromIncomingContext(ctx)
	if !ok {
		panic("no metadata")
	}

	fmt.Printf("k1 %v\n", md2["k1"])
	fmt.Printf("k2 %v\n", md2["k2"])
}

func main() {
	GetContextValue()
	GetContextWithMeta()
}

相关链接

https://chyroc.cn/posts/golang-context-i/

golang context携带值传递

原文:https://www.cnblogs.com/tomtellyou/p/14789450.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!