flag
Go语言内置的Flag包实现了命令行参数的解析,Flag包使得开发命令行工具更加简单。
导入
go
import flag1
类型
其支持的类型有:
boolintint64uintuint64floatfloat64stringduration
定义
使用flag.Type()来定义,返回值是指针
go
name := flag.String("name", "张三", "姓名")
age := flag.Int("age", 15, "年龄")
sex := flag.Bool("sex", true, "性别")1
2
3
2
3
也可以使用flag.TypeVar()来定义
go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "张三", "姓名")
flag.IntVar(&age, "age", 15, "年龄")
flag.BoolVar(&sex, "sex", true, "性别")1
2
3
4
5
6
2
3
4
5
6
解析
通过调用flag.Parse()来解析参数,支持的命令行参数格式有如下几种:
-flag xxx--flag xxx-flag=xxx--flag=xxx
布尔类型的参数必须使用等号,Flag解析会在第一个非命令行参数之前停止。
其他
go
func Args() []string //返回所有非命令参数
func NArg() int //返回非命令行参数的个数
func NFlag() int //返回命令行参数的个数1
2
3
4
5
2
3
4
5
示例
go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "张三", "姓名")
flag.IntVar(&age, "age", 15, "年龄")
flag.BoolVar(&sex, "sex", true, "性别")
flag.Parse()
fmt.Println(name, age, sex)1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
编译后在命令行启动程序
powershell
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe
张三 15 true
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -h
Usage of D:\WorkSpace\Code\GoProject\bin\go_build_GoProject_src_main.exe:
-age int
年龄 (default 15)
-name string
姓名 (default "张三")
-sex
性别 (default true)
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -age 15 -name "李四" -sex=false
李四 15 false
PS D:\WorkSpace\Code\GoProject\bin>1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
评论区留言准则:
1. 本评论区禁止传播封建迷信、吸烟酗酒、低俗色情、赌博诈骗等任何违法违规内容。
2. 当他人以不正当方式诱导打赏、私下交易,请谨慎判断,以防人身财产损失。
3. 请勿轻信各类招聘征婚、代练代抽、私下交易、购买礼包码、游戏币等广告信息,谨防网络诈骗。