flag包是Go语言标准库提供用来解析命令行参数的包,使得开发命令行工具更为简单
常用方法
1.flag.Usage
输出使用方法,如linux下ls -h的帮助输出
2.flag.Type(参数名, 默认值, 使用提示)
Type为类型 如String, Int, Uint 调用相应的flag.Sring flag.Int flag.Uint方法
方法返回相应类型的指针
3.flag.Type(指针, 参数名, 默认值, 使用提示)
与flag.Type方法基本相同,不同的是多一个指针参数,将使用传入的指针,不会再创建指针返回
4.flag.Args
返回解析完命令行参数后的其他参数,如./sh -name cqh a1 a2,将返回a1 a2
5.flag.Parse
执行解析
使用示例代码
创建test.go
package main import ( "fmt" "flag" ) func main() { namePtr := flag.String("name", "username", "姓名") agePtr := flag.Int("age", 18, "年龄") musclePtr := flag.Bool("muscle", true, "是否有肌肉") var email string flag.StringVar(&email, "email", "[email protected]", "邮箱") flag.Parse() args := flag.Args() fmt.Println("name:", *namePtr) fmt.Println("age:", *agePtr) fmt.Println("muscle:", *musclePtr) fmt.Println("email:", email) fmt.Println("args:", args) }
执行go buld后,建立test执行文件
./test -h
输出
Usage of ./test: -age int 年龄 (default 18) -email string 邮箱 (default "[email protected]") -muscle 是否有肌肉 (default true) -name string 姓名 (default "username")
执行
./test -name 肌肉男 -age 20 -email [email protected] 哈哈 呵呵 嘿嘿
输出
name: 肌肉男 age: 20 muscle: true email: musc[email protected] args: [哈哈 呵呵 嘿嘿]
就是这样,Light weight baby !