這是代碼 config/config.goconst PROJECT_ID = "projectid"var Ctx = context.Background()var DSClient *datastore.Clienttype Logger struct { Pkg string}func (l *Logger) Error(v ...interface{}) { log.Print("Error|", l.Pkg, ": ", v)}func (l *Logger) Info(v ...interface{}) { log.Print("Info|", l.Pkg, ": ", v)}var propFile = "${env}.properties"var Props *properties.Propertiesfunc init(){ Props = properties.MustLoadFile(propFile, properties.UTF8) DSClient, err := datastore.NewClient(Ctx, PROJECT_ID) if err != nil { log.Fatal("Couldn't connect to DataStore: ", err) } log.Print("DataStore Client: ", DSClient)}索引/index.go import ( ... "github.com/shwetanka19/project/internal/config") urs := [] user.User{} q := datastore.NewQuery("users").Filter("email=", greq.Email).Limit(1) logger.Info("Now Client: ", config.DSClient) keys, err := config.DSClient.GetAll(config.Ctx, q, &urs)日志DataStore Client: &{0xc000010840 0xc000119d40 projectid}[Now Client: <nil>]為什么 Client 已經(jīng)初始化了,現(xiàn)在卻是 nil 呢?API 調(diào)用期間會調(diào)用 index.go 中的代碼。而 config 在服務(wù)器啟動時被調(diào)用。
1 回答

紫衣仙女
TA貢獻(xiàn)1839條經(jīng)驗 獲得超15個贊
當(dāng)你這樣做時
DSClient, err := datastore.NewClient(Ctx, PROJECT_ID)
您創(chuàng)建一個新變量DSClient
來隱藏另一個變量。您只需要將其更改為:
var err error DSClient, err = datastore.NewClient(Ctx, PROJECT_ID)
- 1 回答
- 0 關(guān)注
- 148 瀏覽
添加回答
舉報
0/150
提交
取消