Golang プログラムでコマンド ライン パラメーターを処理するには、さまざまな方法があります。単純なケースでは、ライブラリを使用せずに os.Args を直接処理できます。実際、Golang の標準ライブラリには、コマンド ライン パラメータを処理するためのフラグ パッケージが用意されています。コマンド ライン パラメータを処理するためのサードパーティ ライブラリ (Pflag など) もあります。
flag パッケージは、コマンド ライン パラメーターを解析するための一連の関数インターフェイスを提供します (推奨学習: go)
コマンド行構文
コマンド ライン構文は主に次の形式です
-flag //只支持bool类型 -flag=x -flag x //只支持非bool类型
上記の構文は 1 つまたは 2 つの '-' 記号に対して同じ効果があります。ただし、 3 番目のケースでは、非 bool 型のみがサポートされることに注意してください。その理由は、次の状況が発生した場合に
cmd -x *
* が 0 になるためです。False はファイル名またはファイルを表す場合があります。はxタグの値を表しますが、0またはfalseの場合はあいまいさが生じるため、3番目の型は非bool型のみをサポートすることと規定されています。整数フラグの場合、有効な値は 1234、0664、0x1234、または負の数値などです。ブール フラグの場合は、1、0、t、f、T、F、true、false、TRUE、FALSE、True、False などになります。
コマンド ライン パラメータの解析方法
flag の使用には主に次の手順が含まれます
フラグ パラメータを定義するには 3 つの方法があります
flag.String( )、Bool ()、Int()、およびその他の flag.Xxx() メソッドの場合、このメソッドは対応するポインターを返します
import "flag" var ip = flag.Int("flagname", 1234, "help message for flagname")
flag.XxxVar() メソッドを通じてフラグを変数にバインドすると、このメソッドは
var flagvar int func init() { flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname") }
などの value type は、 flag.Var() を通じてカスタム タイプをバインドします。また、カスタム タイプは、
flag.Var(&flagVal, "name", "help message for flagname")
などの Value インターフェイス (受信はポインターである必要があります) を実装する必要があります。このタイプのフラグの場合、デフォルト値は変数タイプの初期値です。
flag.Parse() を呼び出して、定義されたフラグに対するコマンド ライン パラメータを解析します。
flag.Parse()
解析関数は、最初の非フラグ コマンド ラインに遭遇しました。パラメータが指定されたら停止します。非フラグ コマンド ライン パラメータとは、コマンド ライン構文を満たさないパラメータを指します。たとえば、コマンド ライン パラメータは cmd --flag=true abc です。最初の非フラグ コマンド ライン パラメーターは "abc" です。
Parse を呼び出して解析した後、フラグ自体 (ポインター型) またはバインドされた変数 (値型) を直接使用できます
fmt.Println("ip has value ", *ip) fmt.Println("flagvar has value ", flagvar)
flag.Args()、flag.Arg(i) フラグ コマンド ライン パラメーターを介して非標準フラグを取得することもできます
以上がGolang フラグとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。