私の Go プログラムが Flags ライブラリを正しく使用しないのはなぜですか?

WBOY
リリース: 2023-06-10 08:27:09
オリジナル
956 人が閲覧しました

Go の人気により、ますます多くのプログラマーが Go を使用してプログラムを作成し始めています。重要な Go ライブラリの 1 つは Flags ライブラリです。 Flags ライブラリは、Go プログラムがコマンド ラインに入力されたパラメータを簡単に解析して使用できるようにするコマンド ライン パラメータ解析ライブラリです。ただし、すべてのプログラマが Flags ライブラリを使用してコマンド ライン パラメータを正しく解析できるわけではありません。 Go プログラムが Flags ライブラリを正しく使用していない場合は、その理由を知りたいかもしれません。

  1. 構文エラー

Flags ライブラリを使用するときによくある問題は、構文エラーです。プログラム作成時に必要なパラメータの追加を忘れたり、Flags ライブラリを使用する際に構文エラーが発生したりすると、プログラムは正しく動作しません。

プログラムが age と name という 2 つのパラメーターを受け取り、Flags ライブラリを通じてこれらのパラメーターを解析するとします。次の例では、無効なフラグ値を指定しています。

package main

import (
    "flag"
    "fmt"
)

func main() {
    name := flag.String("name", "", "Your name")
    age := flag.Int("age", 0, "Your age")
    flag.Parse()

    fmt.Printf("Name: %s, Age: %d", *name, *age)
}
ログイン後にコピー

次のようにフラグを読み取ろうとすると、go run main.go -age=30 -invalid とプログラムは出力します。エラー:

flag provided but not defined: -invalid
Usage of /tmp/go-build943904451/b001/exe/main:
  -age int
        Your age (default 0)
  -name string
        Your name
exit status 2
ログイン後にコピー

Flag ライブラリにより、未定義のフラグを指定するよう求められたことがわかります。

  1. トークンが正しく解析されない

発生する可能性のあるもう 1 つの問題は、タグが正しく解析されないことです。これは通常、プログラムが間違った形式のマークアップを解析しようとしたときに発生します。たとえば、プログラムがすべてのトークンが -- で始まると想定しているにもかかわらず、ユーザーが誤って - または / を使用した場合、プログラムはそれを正しく解析しません。 。 マーク。

次のサンプル プログラムは、go run main.go --name=John --age=30 が正しく入力されている場合は正しい結果を出力しますが、go run が入力されている場合は正しい結果が出力されます。 main.go -name=John -age=30 の場合、タグを正しく解析できません:

package main

import (
    "flag"
    "fmt"
)

func main() {
    var name string
    var age int

    flag.StringVar(&name, "name", "", "Your name")
    flag.IntVar(&age, "age", 0, "Your age")

    flag.Parse()

    fmt.Printf("Name: %s, Age: %d
", name, age)
}
ログイン後にコピー

間違ったタグを入力すると、次のエラーが表示されます:

flag provided but not defined: -n
Usage of /tmp/go-build777882156/b001/exe/main:
  -age int
        Your age (default 0)
  -name string
        Your name
exit status 2
ログイン後にコピー

注、 flag --name の後の ---- に置き換える必要があるため、ライブラリはこのタグを正しく解析できません。

  1. その他の要因

プログラムが Flags ライブラリを正しく使用できない理由は、上記の 2 つの側面にとどまらない場合があります。たとえば、プログラムでは、特定の環境や要件に合わせて、別の Flags ライブラリ バージョンを使用する必要がある場合があります。または、コード内に Flags ライブラリまたはコードの組み合わせによって生成された他の構成が含まれています。

このような問題を完全に否定することはできませんので、問題の原因を調べるために、プログラムが Flags ライブラリの使用要件をすべて満たしているか、最新バージョンを使用しているかなどを確認してください。

実際には、ドキュメントを確認し、サンプル プログラムを注意深く観察することで、Flags ライブラリをより深く理解し、Flags ライブラリを正しく使用する Go プログラムを作成できます。

以上が私の Go プログラムが Flags ライブラリを正しく使用しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート