GO 语言中的flag包--易懂解释
通俗易懂的语言解释GO 语言中的flag包
type Options struct {File stringDB boolVersion bool
}var Flagoptions = new(Options)func Parse() {flag.StringVar(&Flagoptions.File, "f", "settings.yaml", "配置文件")flag.BoolVar(&Flagoptions.DB, "db", false, "数据库迁移")flag.BoolVar(&Flagoptions.Version, "v", false, "版本")flag.Parse()
}
可以把 flag
包想成 Go 程序的“点菜板”——专门用来把命令行上的各种选项(‐v、‐f config.yaml、‐db 等)接收下来,放进你提前准备好的变量里,方便后续代码使用。它主要解决两件事:
-
告诉程序有哪些“菜”可点
你在代码里用flag.StringVar
、flag.BoolVar
等函数,声明:
“我这儿有个-f
需要一个字符串,默认值是 settings.yaml”;
“我这儿有个-db
布尔开关,默认值 false”;
这些声明就像菜单,把可用的选项、默认值和说明文字都写清楚了。 -
开饭前真正“点菜”并分发到碗里
当程序启动后调用flag.Parse()
,flag
包会去解析用户在命令行输入的内容:
• 如果用户输入了-f prod.yaml
,就把变量File
改成 “prod.yaml”;
• 如果用户带了-db
,就把DB
设成true
;
• 如果用户什么都没填,则保持默认值。
解析完毕后,剩下的非选项参数(比如文件名、路径)也会被单独保存,供你查看。
总结一句话:
flag
包就是 Go 官方自带的“命令行参数解析器”。你先用它列出所有可以接受的参数(带默认值和帮助说明),然后在程序启动时让它把用户真正输入的内容填回对应变量,自此你的业务逻辑就能像平常读取普通变量一样使用这些配置了。