1 回答

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
我建議您僅在單個(gè)任務(wù)的生命周期中使用上下文,并通過函數(shù)傳遞相同的上下文。您還應(yīng)該了解在何處使用上下文以及在何處僅將參數(shù)傳遞給函數(shù)。
另一個(gè)建議是使用自定義類型從上下文中設(shè)置和獲取值。
根據(jù)以上所有內(nèi)容,您的程序應(yīng)如下所示:
package main
import (
"context"
"fmt"
)
type KeyMsg string
func main() {
ctx := context.WithValue(context.Background(), KeyMsg("msg"), "hello")
DoSomething(ctx)
}
// DoSomething accepts context value, retrieves message by KeyMsg and prints it.
func DoSomething(ctx context.Context) {
msg, ok := ctx.Value(KeyMsg("msg")).(string)
if !ok {
return
}
fmt.Println("got msg:", msg)
}
您可以將函數(shù) DoSomething 移動(dòng)到另一個(gè)包中,并將其命名為 packagename.DoSomething 它不會(huì)改變?nèi)魏蝺?nèi)容。
- 1 回答
- 0 關(guān)注
- 115 瀏覽
添加回答
舉報(bào)