Go
コマンドラインの引数とフラグの構文解析
サーチ…
コマンドラインの引数
コマンドライン引数の構文解析は、他の言語と非常によく似ています。コードでは、引数のスライスにアクセスするだけで、最初の引数はプログラム自体の名前になります。
簡単な例:
package main
import (
"fmt"
"os"
)
func main() {
progName := os.Args[0]
arguments := os.Args[1:]
fmt.Printf("Here we have program '%s' launched with following flags: ", progName)
for _, arg := range arguments {
fmt.Printf("%s ", arg)
}
fmt.Println("")
}
出力は次のようになります。
$ ./cmd test_arg1 test_arg2
Here we have program './cmd' launched with following flags: test_arg1 test_arg2
各引数は単なる文字列です。 os
パッケージでは次のようになります: var Args []string
フラグ
Go標準ライブラリは、プログラムに渡されるフラグの解析に役立つパッケージflag
を提供します。
flag
パッケージは通常のGNUスタイルのフラグを提供しないことに注意してください 。 :それは、マルチ文字のフラグは、このような単一のハイフンで開始しなければならないことを意味-exampleflag
ではなく、この: --exampleflag
。 GNUスタイルのフラグは、サードパーティ製のパッケージで実行できます。
package main
import (
"flag"
"fmt"
)
func main() {
// basic flag can be defined like this:
stringFlag := flag.String("string.flag", "default value", "here comes usage")
// after that stringFlag variable will become a pointer to flag value
// if you need to store value in variable, not pointer, than you can
// do it like:
var intFlag int
flag.IntVar(&intFlag, "int.flag", 1, "usage of intFlag")
// after all flag definitions you must call
flag.Parse()
// then we can access our values
fmt.Printf("Value of stringFlag is: %s\n", *stringFlag)
fmt.Printf("Value of intFlag is: %d\n", intFlag)
}
flag
は私たちのためにメッセージを助けます:
$ ./flags -h
Usage of ./flags:
-int.flag int
usage of intFlag (default 1)
-string.flag string
here comes usage (default "default value")
すべてのフラグで呼び出し:
$ ./flags -string.flag test -int.flag 24
Value of stringFlag is: test
Value of intFlag is: 24
欠落しているフラグ付きの呼び出し:
$ ./flags
Value of stringFlag is: default value
Value of intFlag is: 1
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow