ホームページ  >  記事  >  バックエンド開発  >  Goでコマンドライン引数を使用するにはどうすればよいですか?

Goでコマンドライン引数を使用するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-05-10 19:03:042348ブラウズ

Go 言語では、コマンド ライン パラメーターは、プログラムに入力を渡し、実行時の動作を指定するための非常に重要な方法です。 Go には、コマンド ライン パラメーターを解析するための標準ライブラリ flag が用意されています。この記事では、Go でコマンド ライン パラメーターを使用する方法を紹介します。

コマンド ライン パラメーターとは

コマンド ライン パラメーターは、プログラムの実行時にコマンド ラインを介してプログラムに渡されるパラメーターであり、プログラム実行時の動作と入力を指定するために使用されます。が走っています。たとえば、Linux の ls コマンドは、詳細情報を一覧表示する -l、ドキュメントの表示と非表示を切り替える -a など、複数のコマンド ライン パラメータを受け入れることができます。

Go では、os.Args を使用して、プログラムの実行時に渡されるすべてのコマンド ライン引数を取得できます。 os.Args は文字列スライスで、最初の要素はプログラムの名前で、次の要素はコマンド ライン パラメータです。例:

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(os.Args)
}

プログラムを実行し、2 つのパラメータ helloworld を渡します:

$ go run main.go hello world

出力結果:

[/tmp/go-build3065006307/b001/exe/main hello world]

ご覧のとおり、os.Args にはプログラムの名前と 2 つのコマンド ライン パラメーターが含まれています。

フラグを使用してコマンド ライン パラメータを解析する

すべてのコマンド ライン パラメータは os.Args を通じて取得できますが、実際の開発では通常、より柔軟な解析方法を使用します。コマンドライン引数。 Go 標準ライブラリは、コマンド ライン パラメーターを解析するための flag パッケージを提供します。

flagパッケージには、ブール値、文字列、整数の 3 種類のコマンド ライン パラメータが用意されています。これら 3 つのパラメーターは、それぞれ flag.Bool()flag.String()、および flag.Int() を通じて定義できます。

以下は、ブール値と文字列のコマンド ライン パラメーターを定義する簡単な例です。

package main

import (
    "flag"
    "fmt"
)

func main() {
    // 定义命令行参数
    var (
        isVerbose bool
        name      string
    )
    flag.BoolVar(&isVerbose, "v", false, "verbose")
    flag.StringVar(&name, "name", "", "name of the user")

    // 解析命令行参数
    flag.Parse()

    // 输出命令行参数
    fmt.Printf("isVerbose=%v, name=%s
", isVerbose, name)
}

上の例では、flag.BoolVar() と # を使用します。 ##flag.StringVar() は、ブール値と文字列のコマンド ライン パラメーターをそれぞれ定義します。これら 2 つの関数には合計 4 つのパラメータがあります:

    コマンド ライン パラメータ値の保存に使用される変数のアドレス;
  1. コマンド ライン パラメータの名前。単一文字または複数文字 名前;
  2. コマンド ライン パラメータのデフォルト値;
  3. コマンド ライン パラメータの説明情報。
コマンド ライン パラメーターを定義した後、

flag.Parse() 関数を呼び出してコマンド ライン パラメーターを解析する必要があります。

プログラムを実行し、2 つのコマンド ライン パラメータ

-v-name="Alice":

$ go run main.go -v -name=Alice

出力結果:

isVerbose=true, name=Alice

flag パッケージはコマンド ライン パラメーターを簡単に解析し、値を対応する変数に保存できることがわかります。

カスタマイズされたコマンド ライン パラメーター

flag パッケージで提供される 3 種類のコマンド ライン パラメーターを使用することに加えて、いくつかの種類のコマンド ライン パラメーターをカスタマイズすることもできます。

たとえば、ドロップダウン ボックス タイプのコマンド ライン パラメータを定義して、ユーザーがいくつかのオプションから 1 つを選択できるようにすることができます。

package main

import (
    "fmt"

    "github.com/AlecAivazis/survey/v2"
)

func main() {
    // 定义下拉框选项
    options := []string{"red", "blue", "green"}

    // 定义命令行参数
    var color string
    prompt := &survey.Select{
        Message: "Pick a color:",
        Options: options,
    }
    survey.AskOne(prompt, &color)

    // 输出命令行参数
    fmt.Printf("color=%s
", color)
}

上の例では、サードパーティのライブラリを使用しています。

github.com/AlecAivazis/survey/v2ドロップダウン ボックス オプションを定義します。次に、survey.AskOne() 関数を使用してドロップダウン ボックスを表示し、ユーザーに選択させます。

プログラムの実行:

$ go run main.go

出力結果:

? Pick a color: 
  ▸ red
    blue
    green
  Answer: red
color=red

ユーザーがいくつかのオプションから色を選択し、選択した値を

color に保存できることがわかります。 ### 変数。 概要

この記事では、Go でコマンド ライン パラメーターを使用する方法を紹介します。

os.Args

を使用してすべてのコマンド ライン パラメーターを取得することも、flag パッケージまたはカスタム メソッドを使用してコマンド ライン パラメーターを解析することもできます。コマンド ライン パラメーターを使用すると、プログラムがより柔軟で使いやすくなり、高品質のコマンド ライン ツールを作成するために必要なスキルでもあります。

以上がGoでコマンドライン引数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。