我已经做了很多关于上下文的研究,但我似乎找不到普遍接受的答案,而且我是Go的新手。
在我当前的代码中,我var ctx = context.Background()已经在各个地方使用了它。
我担心的是,我的所有代码不是都修改相同的上下文吗,因为它是全局变量?。
是的,我知道上下文是请求范围的。
这是我的上下文代码的一部分。
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
}
Run Code Online (Sandbox Code Playgroud)
请尽量不要使用过于复杂的词语来描述术语。
go将上下文从一个函数传递到另一个函数是一种公认的做法。通常,每个函数的第一个参数都是 ifcontext类型。我已经看到,每当上下文被传递并且在方法范围内有一些用例时,就会从父上下文创建一个新上下文。