第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

公共函數(shù)中的 Golang Cobra 命令標(biāo)志未從 cli 獲取值

公共函數(shù)中的 Golang Cobra 命令標(biāo)志未從 cli 獲取值

Go
紅糖糍粑 2023-07-31 15:49:26
我正在將 cobra 命令移至flags函數(shù)內(nèi),以便可以在其他命令中使用它。我可以看到命令,但是當(dāng)我輸入標(biāo)志時(shí)它總是返回false。以下是我的代碼:func NewCommand(ctx context.Context) *cobra.Command {    var opts ListOptions    cmd := &cobra.Command{        Use:   "list",        Short: "List",        RunE: func(cmd *cobra.Command, args []string) error {            fmt.Println(args) // []            opts.refs = args            return List(ctx, gh, opts, os.Stdout)        },    }    cmd = GetCommandFlags(cmd, opts)    return cmd}// GetListCommandFlags for listfunc GetCommandFlags(cmd *cobra.Command, opts ListOptions) *cobra.Command {    flags := cmd.Flags()    flags.BoolVar(&opts.IgnoreLatest, "ignore-latest", false, "Do not display latest")    flags.BoolVar(&opts.IgnoreOld, "ignore-old", false, "Do not display old data")    return cmd}所以當(dāng)我輸入以下命令時(shí)data-check list --ignore-latest的標(biāo)志值--ignore-latest應(yīng)該是true,但我得到的false是 args 中的值RunE。我在這里錯(cuò)過(guò)了什么嗎?GetCommandFlags是我想在其他命令中使用它的東西,我不想重復(fù)相同的標(biāo)志。
查看完整描述

3 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

您應(yīng)該像使用func GetCommandFlags(cmd *cobra.Command, opts *ListOptions)和調(diào)用 func 一樣cmd = GetCommandFlags(cmd, &opts)。


您可以打印opts.IgnoreLatest并opts.IgnoreOld查看更改后的值。


對(duì)我來(lái)說(shuō)效果很好。希望它也對(duì)你有用。


func NewCommand(ctx context.Context) *cobra.Command {

    var opts ListOptions


    cmd := &cobra.Command{

        Use:   "list",

        Short: "List",

        RunE: func(cmd *cobra.Command, args []string) error {

            // fmt.Println(args) // []

            fmt.Println(opts.IgnoreLatest, ", ", opts.IgnoreOld)

            opts.refs = args

            return List(ctx, gh, opts, os.Stdout)

        },

    }


    cmd = GetCommandFlags(cmd, &opts)

    return cmd

}


// GetListCommandFlags for list

func GetCommandFlags(cmd *cobra.Command, opts *ListOptions) *cobra.Command {

    flags := cmd.Flags()

    flags.BoolVar(&opts.IgnoreLatest, "ignore-latest", false, "Do not display latest")

    flags.BoolVar(&opts.IgnoreOld, "ignore-old", false, "Do not display old data")

    return cmd

}


查看完整回答
反對(duì) 回復(fù) 2023-07-31
?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

您正在optsGetCommandFlags值傳遞。您應(yīng)該向它傳遞一個(gè)指針,以便為標(biāo)志注冊(cè)的地址使用opts調(diào)用函數(shù)中聲明的地址。

func GetCommandFlags(cmd *cobra.Command, opts *ListOptions) *cobra.Command {
  ...
}


查看完整回答
反對(duì) 回復(fù) 2023-07-31
?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊

您傳遞的是值參數(shù)而不是指針參數(shù)。

嘗試一些像:

cmd = GetCommandFlags(cmd, &opts, "")


查看完整回答
反對(duì) 回復(fù) 2023-07-31
  • 3 回答
  • 0 關(guān)注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)