Heim > Backend-Entwicklung > Golang > 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

Freigeben: 2023-07-20 14:11:12
nach vorne
1508 Leute haben es durchsucht
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)
        }
}
}
Nach dem Login kopieren

我们通过命令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:]
Nach dem Login kopieren

执行结果

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)
}
Nach dem Login kopieren

执行结果

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)
}
Nach dem Login kopieren

执行结果

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())
}
Nach dem Login kopieren

执行结果

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!

Verwandte Etiketten:
Quelle:Go语言进阶学习
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage