在向 Cobra 控制臺應用程式添加第二個子命令后,我收到了錯誤(no value) used as value。查看錯誤,它說發生了 TooManyValues。好像我試圖回傳 2 個值而不是一個值。這很簡單,但我不確定這如何適用于我撰寫的代碼。我不應該將這些功能添加到與眼鏡蛇控制臺代碼相同的檔案中嗎?
錯誤:
go build -o azGoCLI.exe
# azGoCLI/cmd
cmd\blob.go:40:25: DeleteContainer(args[0], args[1]) used as value
非常感謝提前!
package cmd
import (
"context"
"log"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
"github.com/spf13/cobra"
)
func init() {
rootCmd.AddCommand(mainCmd)
mainCmd.AddCommand(createContainer)
mainCmd.AddCommand(deleteContainer)
}
var mainCmd = &cobra.Command{
Use: "blob",
Short: "...",
Run: func(cmd *cobra.Command, args []string) {
cmd.Usage()
},
}
var createContainer = &cobra.Command{
Use: "create-container [storageAccount] [containerName]",
Short: "...",
Args: cobra.MinimumNArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
return CreateContainer(args[0], args[1])
},
}
var deleteContainer = &cobra.Command{
Use: "delete-container [storageAccount] [containerName]",
Short: "...",
Args: cobra.MinimumNArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
return DeleteContainer(args[0], args[1])
},
}
func CreateContainer(storageaccount, container string) error {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("Authentication failure: % v", err)
}
ctx := context.Background()
containerClient, err := azblob.NewContainerClient("https://" storageaccount ".blob.core.windows.net/" container, cred, nil)
_, err = containerClient.Create(ctx, nil)
if err != nil {
log.Fatal(err)
}
return nil
}
func DeleteContainer(storageaccount, container string) {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("Authentication failure: % v", err)
}
ctx := context.Background()
containerClient, err := azblob.NewContainerClient("https://" storageaccount ".blob.core.windows.net/" container, cred, nil)
_, err = containerClient.Delete(ctx, nil)
if err != nil {
log.Fatalf("Failure: % v", err)
}
}
uj5u.com熱心網友回復:
如您所見,您的函式
func DeleteContainer(storageaccount, container string) {
不回傳任何東西。但是,您要在這里退貨:
var deleteContainer = &cobra.Command{
Use: "delete-container [storageAccount] [containerName]",
Short: "...",
Args: cobra.MinimumNArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
return DeleteContainer(args[0], args[1])
},
}
在RunE仿佛它回傳error。這就是它拋出錯誤的原因。
解決這個問題將取決于您的用例,但您希望如何處理錯誤,以防DeleteContainer出現錯誤
uj5u.com熱心網友回復:
解決方案:為 DeleteContainer 函式添加回傳值和回傳陳述句。
func DeleteContainer(storageaccount, container string) error {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("Authentication failure: % v", err)
}
ctx := context.Background()
containerClient, err := azblob.NewContainerClient("https://" storageaccount ".blob.core.windows.net/" container, cred, nil)
_, err = containerClient.Delete(ctx, nil)
if err != nil {
log.Fatalf("Failure: % v", err)
}
return nil
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/373120.html
標籤:走
下一篇:如何將字串的第一個字母大寫
