var name string
flag.StringVar(&name, "名字", "小王", "请输入名字")
flag.Parse()
//运行命令:go run main.go -name="小红"
//注意等号前后不能用空格。
//运行命令:go run main.go --help
//会打印参数说明
func StringVar(p *string, name string, value string,usage string)
//参数说明
// 第 1 个参数是用于存储该命令参数值的地址,具体到这里就是在前面声明的变量name的地址了,由表达式&name表示。
// 第 2 个参数是为了指定该命令参数的名称,这里是name。
// 第 3 个参数是为了指定在未追加该命令参数时的默认值,这里是everyone。
// 至于第 4 个函数参数,即是该命令参数的简短说明了,这在打印命令说明时会用到。
//第二种方式
var name = flag.String( "名字", "小王", "请输入名字")
a := flag.NewFlagSet("测试使用", flag.ContinueOnError)
s := a.String("name", "小王", "输入名字")
a.Parse(os.Args[1:])
fmt.Println("name = ",*s)
//代码解释
type FlagSet struct {
// Usage函数在解析flag出现错误时会被调用
// 该字段为一个函数(而非采用方法),以便修改为自定义的错误处理函数
Usage func()
// 内含隐藏或非导出字段
}
//创建一个命令参数配置对象
func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet
//与var name = flag.String( "名字", "小王", "请输入名字")作业类似
a.String("name", "小王", "输入名字")
//解析参数列表,有多个FlagSet写几个Parse
a.Parse(os.Args[1:])
//FlagSet结构体属性方法
//初始化
func (f *FlagSet) Init(name string, errorHandling ErrorHandling)
//获取解析的参数数量
func (f *FlagSet) NFlag() int
//获取指定命令的参数信息
func (f *FlagSet) Lookup(name string) *Flag
//获取解析后剩余参数的数量
func (f *FlagSet) NArg() int
// 获取剩余参数集合
(f *FlagSet) Args() []string
//获取指定位置的剩余参数
func (f *FlagSet) Arg(i int) string
// 判断 Parse 是否被调用
func (f *FlagSet) Parsed() bool
//遍历已注册参数
func (f *FlagSet) Visit(fn func(*Flag))
// 遍历所有参数,包括未设置
func (f *FlagSet) VisitAll(fn func(*Flag))
//int,bool的使用方法与string相同
func StringVar(p *string, name string, value string,usage string)
//输出所以参数的默认值
flag.PrintDefaults()
// 告诉命令参数容器,当命令后跟--help或者参数设置的不正确的时候,在打印命令参数使用说明后以状态码2结束当前程序。
flag.ExitOnError
// 最后抛出“运行时恐慌(panic)”。
flag.PanicOnError