サーチ…


コマンドラインの引数

コマンドライン引数の構文解析は、他の言語と非常によく似ています。コードでは、引数のスライスにアクセスするだけで、最初の引数はプログラム自体の名前になります。

簡単な例:

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