做网站seo怎么赚钱,重庆市公共资源交易中心网官网,常德网站建设优化,网络营销主要是什么上回书说到#xff0c;fmt的标准库的一些常用的使用函数。这次说flag的使用#xff0c;以下这些库要去做了解。不然GG#xff0c;Go语言内置的flag包实现了命令行参数的解析#xff0c;flag包使得开发命令行工具更为简单。 文章目录 os.Argsflag包flag.Type()flag.TypeVar(…上回书说到fmt的标准库的一些常用的使用函数。这次说flag的使用以下这些库要去做了解。不然GGGo语言内置的flag包实现了命令行参数的解析flag包使得开发命令行工具更为简单。 文章目录 os.Argsflag包flag.Type()flag.TypeVar()flag.Parse()flag其他函数 os.Args
如果你只是简单的想要获取命令行参数可以像下面的代码示例一样使用os.Args来获取命令行参数。
这个方法我在看的时候有些懵逼什么叫做获取命令行的参数仔细一琢磨发现简单而言就是在DOS控制台中的输入的一些值。这些就叫做获取命令行的参数
os.Args是一个存储命令行参数的字符串切片它的第一个元素是执行文件的名称。
package main
import (fmtos
)
//os.Args demo
func main() {//os.Args是一个[]stringif len(os.Args) 0 {for index, arg : range os.Args {fmt.Printf(args[%d]%v\n, index, arg)}}
}将上面的代码执行go build -o args_demo编译之后(其实就是不用idea编辑器通过最原始的方式进行编译)
flag包
flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration
flag.Type()
flag.Type(flag名, 默认值, 帮助信息)*Type
例如我们要定义姓名、年龄、婚否三个命令行参数我们可以按如下方式定义
func main() {name : flag.String(name, 张三, 姓名)age : flag.Int(age, 18, 年龄)married : flag.Bool(married, false, 婚否)delay : flag.Duration(d, 0, 时间间隔)fmt.Println(*name)fmt.Println(*age)fmt.Println(*married)fmt.Println(*delay)fmt.Printf(%v, name)}需要注意的是此时name、age、married、delay均为对应类型的指针.
flag.TypeVar()
flag.TypeVar(Type指针, flag名, 默认值, 帮助信息)
例如我们要定义姓名、年龄、婚否三个命令行参数我们可以按如下方式定义
var name string
var age int
var married bool
var delay time.Duration
flag.StringVar(name, name, 张三, 姓名)
flag.IntVar(age, age, 18, 年龄)
flag.BoolVar(married, married, false, 婚否)
flag.DurationVar(delay, d, 0, 时间间隔)此时就将值输入到了对应的字段中只不过对比以前的有点点不同而已
flag.Parse()
通过以上两种方法定义好命令行flag参数后需要通过调用flag.Parse()来对命令行参数进行解析。
支持的命令行参数格式有以下几种
-flag xxx 使用空格一个-符号–flag xxx 使用空格两个-符号-flagxxx 使用等号一个-符号–flagxxx 使用等号两个-符号
其中布尔类型的参数必须使用等号的方式指定。
Flag解析在第一个非flag参数单个-“不是flag参数之前停止或者在终止符”–“之后停止。
感兴趣的可以去DOS界面中尝试
flag其他函数
flag.Args() 返回命令行参数后的其他参数以[]string类型
flag.NArg() //返回命令行参数后的其他参数个数
flag.NFlag() //返回使用的命令行参数个数关于命令行参数的问题具体可以看李文周的博客