3 回答
TA贡献1853条经验 获得超9个赞
您应该像使用func GetCommandFlags(cmd *cobra.Command, opts *ListOptions)和调用 func 一样cmd = GetCommandFlags(cmd, &opts)。
您可以打印opts.IgnoreLatest并opts.IgnoreOld查看更改后的值。
对我来说效果很好。希望它也对你有用。
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贡献1866条经验 获得超5个赞
您正在opts
按GetCommandFlags
值传递。您应该向它传递一个指针,以便为标志注册的地址使用opts
调用函数中声明的地址。
func GetCommandFlags(cmd *cobra.Command, opts *ListOptions) *cobra.Command { ... }
- 3 回答
- 0 关注
- 162 浏览
添加回答
举报