這是代碼 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 已經初始化了,現在卻是 nil 呢?API 調用期間會調用 index.go 中的代碼。而 config 在服務器啟動時被調用。
1 回答

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