我已经对上下文进行了大量研究,但似乎找不到普遍接受的答案,而且我是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 关注
- 124 浏览
添加回答
举报
0/150
提交
取消