如何从命令对象传递参数

  • 本文关键字:参数 对象 命令 go
  • 更新时间 :
  • 英文 :


我使用以下代码,该代码需要从函数root, value

传递值
var cfBuild = &cobra.Command{
    Use:   "build",
    Short: "Build",
    Run: func(cmd *cobra.Command, args []string) {

        root, value := Build(target)
    },
    PersistentPostRun: func(cmd *cobra.Command, args []string) {
   //Here I need to use root, value
   } 
}

我可以通过使用全局变量来做到这一点,但是在这种情况下有很好的方法避免全局吗?

这是回购,我没有找到任何好方法...https://github.com/spf13/cobra

顺便说一句使用Viper

喜欢...

Run: func(cmd *cobra.Command, args []string) {
    root, value := Build(target)
    viper.Set("root", root)
    viper.Set("value", value)

,然后以其他方法获取它...这是好方向吗?

您不需要Viper。只需创建2个单例(命令文件中具有全局范围的变量(,您就可以将它们分配给构建功能返回。

示例

package cmd
var (
    root,
    value string
)
var cfBuild = &cobra.Command{
    Use:   "build",
    Short: "Build",
    Run: func(cmd *cobra.Command, args []string) {
        root, value = Build(target)
    },
    PersistentPostRun: func(cmd *cobra.Command, args []string) {
        fmt.Printf("%s, %s", root, value)
   } 
}

最新更新