gpt4 book ai didi

firebase - 无法在返回值中使用类型的变量

转载 作者:行者123 更新时间:2023-12-01 22:14:53 24 4
gpt4 key购买 nike

我正在设置一个将json写入golang中的firebase存储桶的函数。
函数GetStorage应该创建一个新的存储实例,并从函数archiveActive中使用该函数返回它

我有一个问题,我无法弄清楚GetStorage函数的返回类型是什么。
我在return client行上收到以下错误:

cannot use client (variable of type *storage.Client) as *storage.Client value in return statement
func GetStorage() *storage.Client {
ctx := context.Background()
config := &firebase.Config{
StorageBucket: "myapp-cloud.appspot.com",
}
fireBaseApp := push.InitializeAppWithServiceAccount(config)
client, err := fireBaseApp.Storage(ctx)
if err != nil {
log.Fatalln(err)
}
return client

}

func GetContext() context.Context {
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, zone.Second*50)
defer cancel()
return ctx
}

func archiveActive(jsonData string) {
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, zone.Second*50)
defer cancel()
client := GetStorage()
time := zone.Now().Format("2006-01-02")
bucket, err := client.DefaultBucket()
if err != nil {
log.Fatalln(err)
}

obj := bucket.Object("dev/archives/active/" + time)

...
}



但是,通过以下方式进行操作。只要新的存储客户端具有相同的功能,就可以了。我只需要帮助将功能分解为较小的部分即可。
func getStorageConfig() *firebase.Config {
return &firebase.Config{
StorageBucket: "myapp-cloud.appspot.com",
}
}

func getContext() context.Context {
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, zone.Second*50)
defer cancel()
return ctx
}

func archiveActive(jsonData string) {

time := zone.Now().Format("2006-01-02")
ctx := getContext()
client, err := push.InitializeAppWithServiceAccount(getStorageConfig()).Storage(context.Background())
if err != nil {
log.Fatalln(err)
}

bucket, err := client.DefaultBucket()
if err != nil {
log.Fatalln(err)
}

obj := bucket.Object("dev/archives/active/" + time)
...
}

最佳答案

在“firebase.google.com/go/storage”(这是Client的返回值)和“cloud.google.com/go/storage”(这似乎是fireBaseApp.Storage()的返回值)中都有一个GetStorage()结构。 。这两个软件包的名称均为storage,因此,如果您需要导入它们,则必须使用导入别名。

我不确定是否没有看到所有代码,但我认为这可能对您有用:

import firebaseStorage "firebase.google.com/go/storage"

...
func GetStorage() *firebaseStorage.Client {

关于firebase - 无法在返回值中使用类型的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61113237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com