Maison  >  Article  >  développement back-end  >  Un article vous guidera dans l'utilisation du package flag en langage Go

Un article vous guidera dans l'utilisation du package flag en langage Go

Go语言进阶学习
Go语言进阶学习avant
2023-07-20 14:07:591499parcourir
Cette fois, parlons de l'un des packages les plus couramment utilisés dans le langage Goflagflag包。

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

如果你玩过Mysql package.

Un article vous guidera dans l'utilisation du package flag en langage GoLe but de ce package est de recevoir des paramètres de ligne de commande.

if Avez-vous joué à Mysql

, vous devez être familier avec cette interface


🎜🎜Oui, C'est à ça que ça sert, recevoir les paramètres de ligne de commande. 🎜🎜🎜🎜🎜🎜🎜🎜.exe

才能跑,禁止

右击 run

!!

Un article vous guidera dans l'utilisation du package flag en langage Go.exe

才能跑,禁止右击 run!!

Un article vous guidera dans l'utilisation du package flag en langage Go


os.Args

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

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


os.Args

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

🎜不能接收像🎜🎜-u root -p 3306🎜🎜这样指定🎜🎜<code style="font-family: var(--monospace);vertical-align: initial;border-width: 1px;border- style : uni ; couleur de bordure : rvb (231, 234, 237 ); couleur d'arrière-plan : rgb (243, 244, 244); rayon de bordure : 3 px ; remplissage à droite : 2 px ; remplissage à gauche : 2 px ; police size: 0.9em;">root 3306🎜🎜这样的方式。🎜简单了解一下吧。🎜go build -o mysql.exe main.go

编译成一个mysql.exe


Un article vous guidera dans l'utilisation du package flag en langage Go

mysql.exe图

Un article vous guidera dans l'utilisation du package flag en langage Gogo build -o mysql.exe main.go

编译成一个mysql.exe

Un article vous guidera dans l'utilisation du package flag en langage Go

mysql.exe图

Un article vous guidera dans l'utilisation du package flag en langage Go

执行结果

Un article vous guidera dans l'utilisation du package flag en langage Go

注:返回的cmdArgs

执行结果

Un article vous guidera dans l'utilisation du package flag en langage Go

注:

返回的cmdArgs不想要自己第一个值,直接切片就好了。修改

第2行🎜🎜🎜代码。🎜🎜
cmdArgs := os.Args[1:]

执行结果

Un article vous guidera dans l'utilisation du package flag en langage Go


flag

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

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

  • bool

  • int int系列(intint64uintuint64)

  • float系列(floatfloat64)

  • string

  • duration系列(

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

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

    🎜string🎜🎜🎜🎜

    🎜durée🎜🎜

注意

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

执行结果

Un article vous guidera dans l'utilisation du package flag en langage Go

.exe -h结果图

Un article vous guidera dans l'utilisation du package flag en langage 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)
}

执行结果

Un article vous guidera dans l'utilisation du package flag en langage 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())
}

执行结果

Un article vous guidera dans l'utilisation du package flag en langage Go


Résumé

La principale chose à apprendre dans ce chapitre estflagflag包的使用,flag包主要处理的命令行参数传递问题。

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

flag主要有flag.Typeflag.TypeVarUtilisation du package, flag

🎜 gère principalement les problèmes de transmission des paramètres de ligne de commande. 🎜🎜

🎜Oui Avec cela, nous pouvons développer quelque chose comme 🎜🎜mysql🎜🎜Un tel programme. 🎜🎜

🎜drapeau

🎜 🎜Inclut principalement🎜🎜 flag.Type🎜🎜 et 🎜🎜flag.TypeVar🎜🎜Deux différences🎜🎜

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

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

  • 才能取值
🎜🎜

🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer