亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

向 Cobra 包添加多個函數會導致 [ (no value) used as value ]

向 Cobra 包添加多個函數會導致 [ (no value) used as value ]

Go
手掌心 2022-10-17 16:16:23
在向 Cobra 控制臺應用程序添加第二個子命令后,我收到了錯誤(no value) used as value。查找錯誤,它說發生了 TooManyValues。好像我試圖返回 2 個值而不是 1 個。這很簡單,但我不確定這如何適用于我編寫的代碼。我不應該將函數添加到與 cobra 控制臺代碼相同的文件中嗎?錯誤:go build -o azGoCLI.exe# azGoCLI/cmdcmd\blob.go:40:25: DeleteContainer(args[0], args[1]) used as value非常感謝提前!package cmdimport (    "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)    }
查看完整描述

2 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

如您所見,您的功能


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錯誤


查看完整回答
反對 回復 2022-10-17
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

解決方案:為DeleteContainer函數添加一個返回值和一個return語句。


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

}


查看完整回答
反對 回復 2022-10-17
  • 2 回答
  • 0 關注
  • 272 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號