作为程序员,经常会使用一些只有命令行,没有图像界面操作的小工具。
这种小工具,我们使用 go
语言,借助内置的 flag
包,可以很方便的可开发。
切记一条原则。下面的内容,都必须要使用 go build -o "packagename""
来生成二进制包来运行,不能直接使用 run main.go
的方式运行。
var ( name string age int ) func init() { flag.StringVar(&name, "name", "刘德华", "请输入名字") flag.IntVar(&age, "age", 18, "请输入年龄") } func main() { flag.Parse() //如果想要使用命令行传参,就要掉用这个函数。否则只是赋予默认值 fmt.Println(name) fmt.Println(age) }
一开始先声明 name
, age
变量,然后调用 flagflag.StringVar
函数,将默认值存入对应的 变量的指针
执行 init
函数,会给变量赋予对应的默认值
但是只执行 ini
函数,只能使用赋予变量默认值,如果使用命令行传参,就要调用 flag.Parse()
方法,解析命令行传入的参数。
命令行参数的格式可以是:
函数flag.Parse用于真正解析命令参数,并把它们的值赋给相应的变量。对该函数的调用必须在所有命令参数存储载体的声明(这里是对变量name的声明)和设置(这里是指flag.StringVar函数的调用)之后,并且在读取任何命令参数值之前进行。正因为如此,我们最好把flag.Parse()
放在main函数的函数体的第一行
解析过程中遇到非选项字段,将立即结束解析,后面的字段会被放入到 args
变量中,flag.Args()
里面存的是数组。
以 -
或者 --
开头指定选项名,-
和 --
是等效的