1. flag包常用方法和函数
flag 包的使用分为三个步骤:
1. 定义接收参数的变量,一般都把这些变量封装到一个结构体中
2. 注册变量到flag包,常用的类型有: string、int、bool
3. 执行 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 config
import "flag"
type Config struct {
Host string
ListenPort int
User string
Password string
Debug bool
}
var GlobalConfig Config
func 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 main
import (
"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.go
Host: 127.0.0.1
Host: 8080
Host: root
Host: 123456
Host: false