登录
首页 >  Golang >  Go问答

有效沟通的关键

来源:stackoverflow

时间:2024-03-04 10:42:25 144浏览 收藏

本篇文章向大家介绍《有效沟通的关键》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我对上下文做了很多研究,但我似乎找不到普遍接受的答案,而且我还是 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
}

请尽量不要使用过于复杂的词语来描述术语。


正确答案


go 中,将上下文从函数传递到函数是一种公认​​的做法。通常,每个函数的第一个参数都是 context 类型。我已经看到,每当上下文被传递并且在方法范围内有一些用例时,就会从父上下文创建一个新上下文。

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

本篇关于《有效沟通的关键》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>