golang context攜帶值傳遞


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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM