我正在嘗試從 Firestore 數據庫中獲取所有文檔,并且一切正常。但后來我決定將上下文和客戶端變量設為全局變量,這樣我就不必每次都將它們作為參數傳遞。之后事情就破裂了。我得到的錯誤是: panic: runtime error: invalid memory address or nil pointer dereference根據堆棧跟蹤,當我嘗試: client.Collection("dummy").Documents(ctx)我能做些什么來解決這個問題?在我的情況下,如何有效地使用全局變量?我的參考代碼:package mainimport ( "context" "fmt" "log" "cloud.google.com/go/firestore" firebase "firebase.google.com/go" "google.golang.org/api/iterator" "google.golang.org/api/option")var ( ctx context.Context client *firestore.Client)func init() { ctx := context.Background() keyFile := option.WithCredentialsFile("serviceAccountKey.json") app, err := firebase.NewApp(ctx, nil, keyFile) if err != nil { log.Fatalln(err) } client, err = app.Firestore(ctx) if err != nil { log.Fatalln(err) } fmt.Println("Connection to Firebase Established!")}func getDocuments(collectionName string) { iter := client.Collection("dummy").Documents(ctx) for { doc, err := iter.Next() if err == iterator.Done { break } if err != nil { log.Fatalf("Failed to iterate: %v", err) } fmt.Println(doc.Data()["question"]) }}func main() { getDocuments("dummy") defer client.Close()}
如何在 Golang 中使用上下文全局變量?
慕田峪9158850
2022-06-21 10:19:46