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
}

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
您正在opts
按GetCommandFlags
值傳遞。您應(yīng)該向它傳遞一個(gè)指針,以便為標(biāo)志注冊(cè)的地址使用opts
調(diào)用函數(shù)中聲明的地址。
func GetCommandFlags(cmd *cobra.Command, opts *ListOptions) *cobra.Command { ... }

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
您傳遞的是值參數(shù)而不是指針參數(shù)。
嘗試一些像:
cmd = GetCommandFlags(cmd, &opts, "")
- 3 回答
- 0 關(guān)注
- 219 瀏覽
添加回答
舉報(bào)