我已經對上下文進行了大量研究,但似乎找不到普遍接受的答案,而且我是Go的新手。在我當前的代碼中var ctx = context.Background(),它被用于不同的地方。我擔心的是,因為它是一個全局變量,難道我的所有代碼都不修改同一個上下文嗎?.是的,我知道上下文是請求范圍的。這是我的上下文代碼的一部分。var ctx = context.Background()var db *firestore.Clientvar auth *aut.Clientfunc init() { app, err := firebase.NewApp(ctx, nil) if err != nil { log.Fatal(err) } db, err = app.Firestore(ctx) if err != nil { log.Fatal(err) } auth, err = app.Auth(ctx) if err != nil { log.Fatal(err) }}func SetRate(r int) (err error) { //TODO: create last updated field _, err = db.Collection("Rate").Doc("rate").Set(ctx, map[string]int{"USDT": r}) if err != nil { log.Println(err) return err } return nil}請盡量不要使用過于復雜的詞語來描述一個術語。
2 回答

holdtom
TA貢獻1805條經驗 獲得超10個贊
go
在函數之間傳遞上下文是一種公認的做法。通常,每個函數的第一個參數都是 ifcontext
類型。我已經看到,每當一個上下文被傳遞下來并且在方法范圍內有一些用例時,就會從父上下文創建一個新的上下文。

ibeautiful
TA貢獻1993條經驗 獲得超6個贊
最好的做法是在函數內部創建一個上下文,并根據需要在函數之間傳遞它,而不是讓一個上下文在整個包中共享。對于 HTTP 服務器之類的東西,您通常會看到每個傳入 API 調用的唯一上下文。
- 2 回答
- 0 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消