我想在我正在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 關注
- 103 瀏覽
添加回答
舉報
0/150
提交
取消