2017-06-09 45 views
0

我嘗試在Go中編寫我的第一個CLI應用程序。使用codegangsta/cli捕捉命令標誌變量

我使用codegangsta/cli作爲結構。

我的問題:

我有一些命令:

Add --name 

Show --all 

Delete --force 

從文件/commands/add.go我不能得到變量StackName/commands.go集像這樣:

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 b ut我不知道該怎麼做:

​​

我是這樣的:command/add.go:25: undefined: StackName

感謝幫助找到我錯在哪裏。

+0

我不太瞭解「codegangsta/cli」和它的工作方式,但是你在「package main」中聲明變量並且想要在「package命令」中訪問它。 – ivanjovanovic

回答

0

你的文件層次結構是什麼樣的?因爲您可能需要導入commands.go文件import "github.com/YourGithubName/YourDirectory/commands"。我這樣說是因爲你正在試圖在主包中聲明時在命令包中調用該變量。

+0

嗨伊桑,這是我的代碼https://github.com/valentin2105/kubeStacker 我嘗試從命令/ add.go文件中的'commands.go'獲得一個變量,但我不工作,因爲他們不使用相同的包'主'。 –

+0

在add.go文件中,由於您試圖使用其他包中的變量,因此只需將import「github.com/valentin2105/kubeStacker」添加到add.go文件即可。或者你是否試圖以相反的方式去做? –

+0

我已經嘗試了這個解決方案,但是在構建過程中出現了這個錯誤:'import「github.com/valentin2105/kubeStacker」是一個程序,而不是一個可導入的包'我只想從命令中使用全局變量'StackName' .go但是沒有找到.. –