Go 带有codegansta/cli的Catch命令标志变量

Go 带有codegansta/cli的Catch命令标志变量,go,command-line-interface,undefined,Go,Command Line Interface,Undefined,我尝试在Go中编写我的第一个CLI应用程序 我使用codegangsta/cli作为结构 我的问题是: 我有一些命令: Add --name Show --all Delete --force 从文件/commands/add.go中,我无法从/commands.go中获取变量StackName,如下所示: package main var StackName string var Commands = []cli.Command{ { Name: "add",

我尝试在Go中编写我的第一个CLI应用程序

我使用codegangsta/cli作为结构

我的问题是:

我有一些命令:

Add  --name 

Show --all

Delete  --force
从文件/commands/add.go中,我无法从/commands.go中获取变量
StackName
,如下所示:

package main
var StackName string
var Commands = []cli.Command{
{
    Name:   "add",
    Usage:  "",
    Action: command.CmdAdd,

    Flags:  []cli.Flag{
        cli.StringFlag{
            Name: "name, n",
            Value: "default",
            Usage: "Stack name",
            Destination: &StackName,
        },
在add.go文件中,我尝试获取$stackName,但找不到如何执行此操作:

package command

func CmdAdd(c *cli.Context) {
    fmt.PrintF(StackName)
}
我得到了这个:
command/add.go:25:undefined:StackName


谢谢你帮我找出我错的地方

您的文件层次结构是什么样子的?因为您可能需要导入commands.go文件
导入“github.com/yourgthubname/YourDirectory/commands”
。我之所以这样说,是因为您试图在命令包中调用在主包中声明的变量。

我不太了解“codegangsta/cli”及其工作方式,但您在“package main”中声明变量,并希望在“package command”中访问它。嗨,Ethan,这是我的代码,我尝试从commands/add.go文件中的“commands.go”获取变量,但我不工作,因为它们不使用相同的包“main”。在add.go文件中,由于您尝试使用另一个包中的变量,只需将import“github.com/valenti2105/kubeStacker”添加到add.go文件中即可。或者你正试图用另一种方式来做呢?我尝试过这个解决方案,但在go构建过程中出现了一个错误:`import“github.com/valenti2105/kubeStacker”是一个程序,不是可导入的包`我只想使用commands.go中的全局变量
StackName
,但不知道如何使用..是的,因为StackName位于github.com/valenti2105/kubeStacker的主包中,所以必须导入它。在导入的末尾添加一个/main,因为这是正确的包名?这似乎不是正确的做法:找不到包“github.com/valenti2105/kubeStacker/main”找不到包“github.com/valenti2105/kubeStacker/main.go”(我有创建骨架的习惯)。谢谢:)