go 语言的 flag 包

功能

作为程序员,经常会使用一些只有命令行,没有图像界面操作的小工具。

这种小工具,我们使用 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)
}

使用方法

  1. 一开始先声明 name , age 变量,然后调用 flagflag.StringVar 函数,将默认值存入对应的 变量的指针

  2. 执行 init 函数,会给变量赋予对应的默认值

  3. 但是只执行 ini 函数,只能使用赋予变量默认值,如果使用命令行传参,就要调用 flag.Parse() 方法,解析命令行传入的参数。

  4. 命令行参数的格式可以是:

  • flag xxx (使用空格,一个 - 符号)
  • --flag xxx (使用空格,两个 - 符号)
  • -flag=xxx (使用等号,一个 - 符号)
  • --flag=xxx (使用等号,两个 - 符号)

flag.Parse() 方法

  1. 函数flag.Parse用于真正解析命令参数,并把它们的值赋给相应的变量。对该函数的调用必须在所有命令参数存储载体的声明(这里是对变量name的声明)和设置(这里是指flag.StringVar函数的调用)之后,并且在读取任何命令参数值之前进行。正因为如此,我们最好把flag.Parse()放在main函数的函数体的第一行

  2. 解析过程中遇到非选项字段,将立即结束解析,后面的字段会被放入到 args 变量中,flag.Args() 里面存的是数组。

  3. - 或者 -- 开头指定选项名,--- 是等效的

上一篇:20165224 陆艺杰 Exp 8 Web基础


下一篇:微信小程序页面跳转url传参,对象、数据过长、特殊字符问题