go 语言的 flag 包
功能
作为程序员,经常会使用一些只有命令行,没有图像界面操作的小工具。
这种小工具,我们使用 go
语言,借助内置的 flag
包,可以很方便的可开发。
用法
切记一条原则。下面的内容,都必须要使用 go build -o "packagename""
来生成二进制包来运行,不能直接使用 run main.go
的方式运行。
代码示例如下
复制var (
name string
age int
)
func init() {
flag.StringVar(&name, "name", "刘德华", "请输入名字")
flag.IntVar(&age, "age", 18, "请输入年龄")
}
func main() {
flag.Parse() //如果想要使用命令行传参,就要调用这个函数。否则只是赋予默认值;该行的作用是用来解析命令行参数
fmt.Println(name)
fmt.Println(age)
}
使用方法
-
一开始先声明
name
,age
变量,然后调用flagflag.StringVar
函数,将默认值存入对应的 变量的指针 -
执行
init
函数,会给变量赋予对应的默认值 -
但是只执行
ini
函数,只能使用赋予变量默认值,如果使用命令行传参,就要调用flag.Parse()
方法,解析命令行传入的参数。 -
命令行参数的格式可以是:
- flag xxx (使用空格,一个 - 符号)
- --flag xxx (使用空格,两个 - 符号)
- -flag=xxx (使用等号,一个 - 符号)
- --flag=xxx (使用等号,两个 - 符号)
flag.Parse() 方法
-
函数flag.Parse用于真正解析命令参数,并把它们的值赋给相应的变量。对该函数的调用必须在所有命令参数存储载体的声明(这里是对变量name的声明)和设置(这里是指flag.StringVar函数的调用)之后,并且在读取任何命令参数值之前进行。正因为如此,我们最好把
flag.Parse()
放在main函数的函数体的第一行 -
解析过程中遇到非选项字段,将立即结束解析,后面的字段会被放入到
args
变量中,flag.Args()
里面存的是数组。 -
以
-
或者--
开头指定选项名,-
和--
是等效的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具