Heim  >  Artikel  >  Backend-Entwicklung  >  Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

Go语言进阶学习
Go语言进阶学习nach vorne
2023-07-20 14:07:591477Durchsuche
Lassen Sie uns dieses Mal über eines der am häufigsten verwendeten Pakete in der Go-Sprache sprechenflagflag包。

这个包的用途是接收命令行参数的。

如果你玩过Mysql Paket.

Der Zweck dieses Pakets besteht darin, Befehlszeilenparameter zu empfangen.

if Hast du Mysql

, Sie müssen mit dieser Schnittstelle vertraut sein


🎜🎜Ja, Dafür dient es, Befehlszeilenparameter zu empfangen. 🎜🎜🎜🎜🎜🎜🎜🎜.exe

才能跑,禁止

右击 run

!!

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache.exe

才能跑,禁止右击 run!!

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache


os.Args

其实Go的os模块,也带有这个功能,但是这个功能有点欠缺。

不能接收像-u root -p 3306这样指定key的值,只能接收像root 3306


os.Args

🎜其实Go的os模块,也带有这个功能,但是这个功能有点欠缺。🎜🎜

🎜不能接收像🎜🎜-u root -p 3306🎜🎜这样指定🎜🎜Taste🎜🎜的值,🎜🎜只能接收像🎜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.gogo build -o mysql.exe main.go编译成一个mysql.exe

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

mysql.exe图

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

执行结果

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

注:返回的cmdArgs编译成一个mysql.exe

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

执行结果

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

注:🎜🎜🎜返回的🎜🎜cmdArgs不想要自己第一个值,直接切片就好了。🎜🎜🎜🎜修改🎜🎜🎜第2行🎜🎜🎜代码。🎜🎜
cmdArgs := os.Args[1:]

执行结果

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache


flag

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

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

  • bool

  • int int系列(intint64uintuint64)

  • float系列(floatfloat64)

  • string

  • duration系列(

    int🎜,🎜🎜int64🎜,🎜🎜uint🎜,🎜🎜uint64🎜)🎜🎜🎜🎜

    🎜float🎜系列(🎜🎜float🎜,🎜🎜float64🎜)🎜🎜🎜🎜

    🎜string🎜🎜🎜🎜

    🎜duration🎜🎜

注意

使用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)
}

执行结果

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

.exe -h结果图

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

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

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)
}

执行结果

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache

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())
}

执行结果

Ein Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache


Zusammenfassung

Das Wichtigste, was Sie in diesem Kapitel lernen sollten, ist:flagflag包的使用,flag包主要处理的命令行参数传递问题。

有了这个我们就能开发出像mysql那样的程序。

flag主要有flag.Typeflag.TypeVarVerwendung des Pakets, flag

🎜 Paket behandelt hauptsächlich Probleme bei der Übergabe von Befehlszeilenparametern. 🎜🎜

mysql🎜🎜So ein Programm. 🎜🎜</p> <p cid="n66" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white -space: pre-wrap;font-family: „Open Sans“, „Clear Sans“, „Helvetica Neue“, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;“>🎜< code style=" box-sizing: border-box var initial solid rgb>Flag🎜 🎜Hauptsächlich enthalten🎜🎜<code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border-width: 1px;border-style: solid;border-color : rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding-right: 2px;padding-left: 2px;font-size: 0.9em;"> flag.Type🎜🎜 und 🎜🎜flag.TypeVar🎜🎜Zwei Unterschiede🎜🎜

  • flag .Typeflag.Type出来的变量是指针类型,需要用*变量名才能取值

  • flag.TypeVar出来的变量是指针类型,需要用*变量名

  • 才能取值

🎜🎜

🎜 Flag.Typevar 🎜🎜 的 变量 直接 直接 就 是 标准 标准 (推荐) 🎜🎜🎜🎜🎜

Das obige ist der detaillierte Inhalt vonEin Artikel führt Sie durch die Verwendung des Flag-Pakets in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:Go语言进阶学习. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen