我使用以下代码,该代码需要从函数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)
}
}