1. flag包常用方法和函数
flag 包的使用分为三个步骤:1. 定义接收参数的变量,一般都把这些变量封装到一个结构体中2. 注册变量到flag包,常用的类型有: string、int、bool3. 执行 Parse() 方法解析参数# 常用方法1. flag.StringVar()Syntax: func StringVar(p *string, name string, value string, usage string)Man: StringVar用指定的名称、默认值、使用信息注册一个string类型flag,并将flag的值保存到p指向的变量。2. flag.StringVar()Syntax: func IntVar(p *int, name string, value int, usage string)Man: IntVar用指定的名称、默认值、使用信息注册一个int类型flag,并将flag的值保存到p指向的变量。3. flag.BoolVar()Syntax: func BoolVar(p *bool, name string, value bool, usage string)Man: BoolVar用指定的名称、默认值、使用信息注册一个bool类型flag,并将flag的值保存到p指向的变量。4. flag.StringVar()Syntax: func Parse()Man: 从os.Args[1:]中解析注册的flag。必须在所有flag都注册好而未访问其值时执行。
2. 案例
flag 包常用在一个项目的配置 config 文件下进行参数处理,处理的过程一般写在 init() 函数中,用于从命令行接收参数作为全局配置,如数据库信息、日志等级等等。
package configimport "flag"type Config struct {Host stringListenPort intUser stringPassword stringDebug bool}var GlobalConfig Configfunc init() {flag.StringVar(&GlobalConfig.Host, "h", "127.0.0.1", "监听的IP")flag.IntVar(&GlobalConfig.ListenPort, "p", 8080, "监听的端口")flag.StringVar(&GlobalConfig.User, "u", "root", "登陆的用户")flag.StringVar(&GlobalConfig.Password, "pwd", "123456", "用户密码")flag.BoolVar(&GlobalConfig.Debug, "d", false, "是否开启debug模式")flag.Parse()}
package mainimport ("fmt""studygo/models/flag/config")func main() {fmt.Println("Host:", config.GlobalConfig.Host)fmt.Println("Host:", config.GlobalConfig.ListenPort)fmt.Println("Host:", config.GlobalConfig.User)fmt.Println("Host:", config.GlobalConfig.Password)fmt.Println("Host:", config.GlobalConfig.Debug)}
E:\Projects\Go\src\studygo\models\flag\main>go run main.goHost: 127.0.0.1Host: 8080Host: rootHost: 123456Host: false
