2017-06-09 10 views
0

私は最初のCLIアプリケーションをGoに書き込もうとしています。codgangsta/cliでCatchコマンドフラグ変数

私は構造のためにcodegangsta/cliを使用します。

私の問題:

私はいくつかのコマンドがあります:

Add --name 

Show --all 

Delete --force 

私はセット/commands.go から変数StackNameを取得することはできません /commands/add.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 command"でアクセスしたいと思います。 – ivanjovanovic

答えて

0

ファイル階層はどのように見えますか? commands.goファイルimport "github.com/YourGithubName/YourDirectory/commands"をインポートする必要がある可能性があるためです。これは、メインパッケージで宣言されているときにコマンドパッケージ内の変数を呼び出そうとしているためです。

+0

こんにちはEthan、ここに私のコードですhttps://github.com/valentin2105/kubeStacker 私はコマンド/ add.goファイルで 'commands.go'から変数を取得しようとしますが、使用しないため動作しません同じパッケージ 'main'。 –

+0

add.goファイル内では、別のパッケージの変数を使用しようとしているので、import "github.com/valentin2105/kubeStacker"をadd.goファイルに追加するだけです。または、それを逆にしようとしていますか? –

+0

私はこのソリューションを試しましたが、ビルドプロセスでこのエラーが発生しました: 'import" github.com/valentin2105/kubeStacker "はプログラムであり、インポート可能なパッケージではありません。"コマンドからグローバル変数 'StackName'を使いたい.goしかし、方法を見つけることができません.. –

関連する問題