$ ./main -hobby=study # 没有hobby参数
flag provided but not defined: -hobby
Usage of ./main:
-age int
Input Your Age (default 28)
-flagname int
Just for demo (default 1234)
-gender string
Input Your Gender (default "male")
-name string
Input Your Name (default "nick")
传递多余的参数调用:
$ ./main -name=李四 a bc
args=[a bc], num=2 # 这是多余的参数,多余参数不能是 -xxx 或者 --xxx的形式
arg[0]=a
arg[1]=bc
name= 李四
age= 28
gender= male
flagname= 1234
查看帮助命令
flag会自动为程序生成帮助命令:
$ ./main --help # 或者使用 -h
Usage of ./main:
-age int
Input Your Age (default 28)
-flagname int
Just for demo (default 1234)
-gender string
Input Your Gender (default "male")
-name string
Input Your Name (default "nick")
命令行传参形式
单个bool标志:main -b=true,可以省略为main -b
一下四种传参形式是相同的:
main --name=zhangsa
main --name zhangsan
main -name=zhangsan
main -name zhangsan
约定俗称将单个-表示命令参数的缩写,两个-,也就是--表示命令参数全写
非标志参数
也就是不带-的参数:
flag.Args()
命令缩写实现
通过提供2个标志处理程序实现:
var gopherType string
func init() {
const (
defaultGopher = "pocket"
usage = "the variety of gopher"
)
flag.StringVar(&gopherType, "gopher_type", defaultGopher, usage)
flag.StringVar(&gopherType, "g", defaultGopher, usage+" (shorthand)")
}