Go的flag库可以用来从命令行参数中解析变量。它有一些便利的特性,比如设置默认值,设置不同类型的变量,以及支持注释。Go的flag库使用起来也比较简单,只需要调用flag.Parse()函数,它会自动解析命令行参数。Go的flag库还支持多种变量类型,比如字符串、布尔值、整数、浮点数等。使用者可以根据需要来选择恰当的类型。此外,Go的flag库还支持多个命令行参数的组合使用,可以大大提高程序的灵活性。

使用Go的flag库来解析变量的例子如下:

package main

import "flag"

func main() {
//两种不同的方式定义命令行参数
	var name string
	flag.StringVar(&name, "name", "default name", "name of the user")
	//注意age是一个指针
	age := flag.Int("age", 18, "age of the user")

	flag.Parse()
	fmt.Println("name: ", name)
	fmt.Println("age: ", *age)
  // Do something with the name
}

上面的示例代码中,flag.StringVar用来定义一个字符串变量name"name"表示命令行参数的名称,"default name"表示默认值,"name of the user"表示注释。flag.Parse()用来解析命令行参数,解析之后变量name里面就会存放用户输入的值。

flag参数类型

flag包支持的命令行参数类型有boolintint64uintuint64float float64stringduration

flag参数 有效值
字符串flag 合法字符串
整数flag 1234、0664、0x1234等类型,也可以是负数。
浮点数flag 合法浮点数
bool类型flag 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False。
时间段flag 任何合法的时间段字符串。如”300ms”、”-1.5h”、”2h45m”。合法的单位有”ns”、”us” /“µs”、”ms”、”s”、”m”、”h”。
flag.Args()  ////返回命令行参数后的其他参数,以[]string类型
flag.NArg()  //返回命令行参数后的其他参数个数
flag.NFlag() //返回使用的命令行参数个数