golang flag是什么

(*-*)浩
Lepaskan: 2019-12-03 10:09:59
asal
2964 orang telah melayarinya

golang flag是什么

在 Golang 程序中有很多种方法来处理命令行参数。简单的情况下可以不使用任何库,直接处理 os.Args;其实 Golang 的标准库提供了 flag 包来处理命令行参数;还有第三方提供的处理命令行参数的库,比如 Pflag 等。

flag包提供了一系列解析命令行参数的功能接口              (推荐学习:go

命令行语法

命令行语法主要有以下几种形式

-flag //只支持bool类型
-flag=x
-flag x //只支持非bool类型
Salin selepas log masuk

以上语法对于一个或两个‘-’号,效果是一样的,但是要注意对于第三种情况,只支持非bool类型,原因是碰到如下情况时

cmd -x *
Salin selepas log masuk

*为0,false有可能表示一个文件名或文件,也有可能表示x标签的值为0或false,会产生二义性,因此规定第三种只支持非bool类型。对于整形flag,合法的值可以为1234, 0664,0x1234或负数等。对于布尔型flag,可以为1, 0, t, f, T, F,true, false, TRUE, FALSE, True, False等

命令行参数解析方法

使用flag主要包括以下几步

定义flag参数,有三种方式

通过flag.String(), Bool(), Int() 等flag.Xxx()方法,该种方式返回一个相应的指针

import "flag"
var ip = flag.Int("flagname", 1234, "help message for flagname")
Salin selepas log masuk

通过flag.XxxVar()方法将flag绑定到一个变量,该种方式返回值类型,如

var flagvar int
func init() {
    flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
}
Salin selepas log masuk

通过flag.Var()绑定自定义类型,自定义类型需要实现Value接口(Receives必须为指针),如

flag.Var(&flagVal, "name", "help message for flagname")
Salin selepas log masuk

对于这种类型的flag,默认值为该变量类型的初始值

调用flag.Parse()解析命令行参数到定义的flag

flag.Parse()
Salin selepas log masuk

解析函数将会在碰到第一个非flag命令行参数时停止,非flag命令行参数是指不满足命令行语法的参数,如命令行参数为cmd --flag=true abc则第一个非flag命令行参数为“abc”

调用Parse解析后,就可以直接使用flag本身(指针类型)或者绑定的变量了(值类型)

fmt.Println("ip has value ", *ip)
fmt.Println("flagvar has value ", flagvar)
Salin selepas log masuk

还可通过flag.Args(), flag.Arg(i)来获取非flag命令行参数

Atas ialah kandungan terperinci golang flag是什么. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan