7

Go-Flag包文档翻译

 3 years ago
source link: https://studygolang.com/articles/31077
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

golang-flag包文档翻译

flag包实现了命令行参数解析。

代码中仅对注释进行翻译。

使用

使用 flag.String()flag.Bool()flag.Int() 等函数声明命令行参数。

如下示例声明了一个整型参数 -flagname ,并将信息存储在了指针 ip 中,类型为 *int

import "flag"
var ip = flag.Int("flagname", 123, "help message for flagname")

如果你喜欢,你可以使用 Var() 这类函数将参数绑定到变量中。

var flagvar int
func init(){
    flag.IntVat(&flagvar, "flagname", 1234, "help message for flagname")
}

你也可以创建一个实现了Value接口(指针接收器)的参数,然后绑定在一起,示例如下

flag.Var(&flagVal, "name", "help message for flagname")

对于这类参数,数据的默认值将会是数据的初始化数据。

在所有参数声明后,调用 flag.Parse() 方法,根据已经声明的参数进行解析。

参数在被解析之后可能会被直接使用,如是使用参数本身,则参数的类型为指针类型,如果是进行了变量绑定,则参数是数据值。参数绑定后,尝试以下代码。

fmt.Println("ip has value ", *ip)
fmt.Println("flagvar has value ", flagvar)

解析之后,标记后面的参数可以用作切片 flag.Args() 或单独用作 flag.Arg(i)

参数的下标范围:0- flag.Narg()-1

命令行语法

flag 可以解析以下格式的参数

-flag
-flag=x
flag x

可以使用一个或两个 --x--x 是等效的。最后一种格式不支持布尔类型,因为 cmd -x * 中的 *Unix shell 通配符的命令的含义,如果存在名为0,false等的文件,则该命令的含义将发生变化。必须使用 -a=false 形式来关闭a布尔标志。

标志解析在第一个非标志参数( - 是非标志参数)之前或终止符 -- 之后停止。

整型参数接受 1234 , 0664 , 0x1234 与负数。

布尔类型参数接受 1 , 0 , t , f , T , F , true , false , TRUE , FALSE , True , False

持续时间参数接受任何对time.ParseDuration有效的输入。

命令行参数的默认集合( FlagSet )由顶级函数控制。 FlagSet 类型允许人们定义独立的标志集,例如在命令行界面中实现子命令。FlagSet的方法类似于命令行标志集的顶级功能。

有疑问加站长微信联系

iiUfA3j.png!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK