我已經對背景關系進行了大量研究,但似乎找不到普遍接受的答案,而且我是Go新手。
在我當前的代碼中var ctx = context.Background(),我已經在各個地方使用了它。
我擔心的是,由于它是全域變數,我的所有代碼不是都在修改相同的背景關系嗎?.
是的,我知道 context 是request scoped。
這是我的背景關系代碼的一部分。
var ctx = context.Background()
var db *firestore.Client
var auth *aut.Client
func 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
}
請盡量不要使用過于復雜的詞語來描述一個術語。
uj5u.com熱心網友回復:
go將背景關系從函式傳遞到函式是一種公認??的做法。通常,每個函式的第一個引數如果context型別。我已經看到,每當一個背景關系被傳遞并且在方法范圍內有一些用例時,就會從父背景關系創建一個新的背景關系。
uj5u.com熱心網友回復:
最佳實踐是在函式內部創建背景關系并根據需要在函式之間傳遞它,而不是在包中共享一個背景關系。對于 HTTP 服務器之類的東西,您通常會看到每個傳入 API 呼叫的唯一背景關系。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/464593.html
下一篇:計算跳過節假日和周末的作業日
