ホームページ  >  記事  >  バックエンド開発  >  この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。

この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。

Go语言进阶学习
Go语言进阶学习転載
2023-07-20 14:07:591481ブラウズ
今回は、Go 言語で最も一般的に使用されるパッケージの 1 つについて話します フラグパッケージ。

#このパッケージの目的は、コマンド ライン パラメーターを受け取ることです。

#Mysql をプレイしたことがある場合は、このインターフェースに精通しているはずです

はい、コマンド ライン パラメーターを受け取るために使用されます。 この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。


この章で学習したコードはすべて、.exe にコンパイルする必要があります。実行、禁止 #右クリック実行#! !

この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。


os.Args


実際に行ってみましょうos モジュールにもこの機能がありますが、この機能はやや不足しています。

-u root -p 3306 のような指定は受信できませんkey の値は、root 3306 のような値のみを受け取ることができます。 簡単に見てみましょう。

コード

func main() {
    cmdArgs := os.Args
    if len(cmdArgs) > 0 {
        for index, value := range cmdArgs {
            fmt.Printf("索引:%v,value值:%v\n", index, value)
        }
}
}

コマンドを渡しますgo build -o mysql .exe main.gomysql.exe にコンパイルされます。

この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。

mysql.exe の図


この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。

実行結果

この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。

##注:

返された cmdArgs はスライスであり、最初の値は独自の ファイル名 です。最初の値は必要ないので、直接スライスしてください。

行 2 コードを変更します。

cmdArgs := os.Args[1:]

执行结果

この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。


flag

上述的可能也发现问题了,只能接收简单的值,不能接收key value这种。

flag可以做到,flag有只能接收以下几种类型

  • bool

  • intシリーズ(int, int64uintuint64 )

  • floatシリーズ(float ,float64)

  • string

  • 期間

注意

使用flag包,最后要使用flag.Parse()转换一下才能获取命令行参数。

flag.Type()

话不多说,直接代码

func main() {
    // 第一个参数是命令行key,第二个参数是默认是,第三个参数是 .exe -h 提示
    var user = flag.String("user", "root", "用户名")
    var port = flag.Int("port", 3306, "端口")
    var ip = flag.String("ip", "localhost", "mysql ip")

    //必须使用flag.Parse()解析一下命令行参数
    flag.Parse()
    //flag.Type返回的是一个指针,必须通过 *变量取值
    fmt.Println(*user,*port,*ip)
}

执行结果

この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。

.exe -h结果图

この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。

懂了叭,你今天,学废了吗!

flag.TypeVar()

上述你可能也发现了问题,需要用*变量才能取到值,是不是感觉不太方便,那就来看看flag.TypeVar()

func main() {
    //声明变量用于接收命令行参数
    var user string
    var port int
    var ip string

    //从命令行扫描参数赋值到变量
    flag.StringVar(&user, "user", "root", "用户名")
    flag.IntVar(&port, "port", 3306, "端口")
    flag.StringVar(&ip, "ip", "localhost", "mysql ip")

    //必须使用flag.Parse()解析一下命令行参数
    flag.Parse()
    //flag.Type返回的是一个指针,必须通过 *变量取值
    fmt.Println(user, port, ip)
}

执行结果

この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。

flag其他方法

flag还有一些其他无关紧要的方法,了解就好。

func main() {
    //声明变量用于接收命令行参数
    var user string
    var port int
    var ip string

    //从命令行扫描参数赋值到变量
    flag.StringVar(&user, "user", "root", "用户名")
    flag.IntVar(&port, "port", 3306, "端口")
    flag.StringVar(&ip, "ip", "localhost", "mysql ip")

    //必须使用flag.Parse()解析一下命令行参数
    flag.Parse()
    //flag.Type返回的是一个指针,必须通过 *变量取值
    fmt.Println(user, port, ip)
    ///////////////// 其他方法
    //返回命令行参数后的其他参数
    fmt.Println(flag.Args())
    //返回命令行参数后的其他参数个数
    fmt.Println(flag.NArg())
    //返回使用的命令行参数个数
    fmt.Println(flag.NFlag())
}

执行结果

この記事では、Go 言語でのフラグ パッケージの使用方法について説明します。


概要

この章で学ぶ主な内容は、#フラグです パッケージ #flag パッケージを使用すると、主にコマンド ライン パラメータの受け渡しの問題が処理されます。

これにより、mysql のようなプログラムを開発できます。

flag 主に flag.Type と # が含まれます##flag.TypeVar2 つの違い

  • flag.Type出てくる変数はポインタ型です。* を使用する必要があります。変数名は値を取得できます

  • ##flag.TypeVar変数出てくるのは直接標準変数です (推奨)

以上がこの記事では、Go 言語でのフラグ パッケージの使用方法について説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はGo语言进阶学习で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。