我想在我正在go使用的 cli 工具中选择以下 cmd 调用cobra:$ mytool envs apps compare$ mytool envs vars compare因此,我正在创建命令并执行绑定,如下所示: rootCmd.AddCommand(envsCmd) envsCmd.AddCommand(appsCmd) envsCmd.AddCommand(varsCmd) varsCmd.AddCommand(compareCmd) appsCmd.AddCommand(compareCmd)但是,在检查子命令的父级时compare,结果总是appsvar compareCmd = &cobra.Command{ Hidden: false, Use: "compare", Short: "", Long: ``, RunE: func(cmd *cobra.Command, args []string) error { fmt.Println(cmd.Parent().Use)apps无论我是否调用,上述内容总是会打印$ mytool envs apps compare或者$ mytool envs vars compare我是否应该假设至少使用我想要实现的目标是不可能的cobra?
1 回答

缥缈止盈
TA贡献2041条经验 获得超4个赞
这些命令使用指针链接,因此您添加的最后一个成为父命令。请尝试使用相同命令的两个副本:
var baseCompareCmd = cobra.Command{...}
var varCompareCmd = baseCompareCmd
var appsCompareCmd = baseCompareCmd
varsCmd.AddCommand(&varCompareCmd)
appsCmd.AddCommand(&appsCompareCmd)
- 1 回答
- 0 关注
- 108 浏览
添加回答
举报
0/150
提交
取消