使用go语言框架flag使用命令行参数
十月 20, 2024
简介
- 在Go语言的标准库中,flag 包提供了一种简单的方法来解析命令行参数。以下是一个简单的示例,演示如何使用 flag 包:
快速使用
基本用法
优势
使用的方法就是将命令行参数转化为内部的变量去使用
场景
测试环境的变量控制,比如日志级别控制等等
代码
- 学习一个库的第一步当然是使用它。我们先看看flag库的基本使用
1 | package main |
- 普通启动的打印
- 设置命令行参数
- 启动
- 使用命令查看可以配置的命令行参数和描述
1 | .\main.exe -h |
高级使用方法
接口实现的方法控制命令行参数的传递
优势:
更加灵活,不是给什么参数就赋值什么参数,可以对值进行判断或者修改
场景
如果传入的是value1,value2,value3这样的可以写成数组传入变量
代码
- 实现Value接口
1 | type Value interface { |
- 实现(将环境变量的字符串转换为字符串数组给变量赋值)
1 | type stringSlice []string |
- 使用
1 | func main() { |
- 结果
FlagSet的使用
优势
可以对命令行参数的变量进行分组管理,同一个flagset的变量都分到一组去了
场景
变量的分组控制,比如数据库的地址,端口等等分为一组使用
代码
创建一个叫group的FlagSet,将name分配到这个FlagSet中
flag.NewFlagSet创建于IGfs
fs.String定义一个fs参数(参数名字,参数默认值.参数描述)
fs.Parse(os.Args[1:]) 解析所有的参数
fs.NArg()没有完成解析的参数个数
1 | func main() { |
使用FlagSet的分组使用
创建两个fs
fs.Lookup查看这个参数是不是自己组的,解析非自己组的参数会报错!!!
fs.Parse(fsArgs)批量解析
1 | func test() { |
- 查看结果
- 查看分组状况
1 | func main() { |
- 打印情况
查看评论