为了账号安全,请及时绑定邮箱和手机立即绑定

传递上下文的最佳方式

传递上下文的最佳方式

Go
青春有我 2022-12-05 17:15:42
我已经对上下文进行了大量研究,但似乎找不到普遍接受的答案,而且我是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类型。我已经看到,每当一个上下文被传递下来并且在方法范围内有一些用例时,就会从父上下文创建一个新的上下文。



查看完整回答
反对 回复 2022-12-05
?
ibeautiful

TA贡献1993条经验 获得超6个赞

最好的做法是在函数内部创建一个上下文,并根据需要在函数之间传递它,而不是让一个上下文在整个包中共享。对于 HTTP 服务器之类的东西,您通常会看到每个传入 API 调用的唯一上下文。



查看完整回答
反对 回复 2022-12-05
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号