golang 让flag单个标记支持多个参数
时间: 2023-09-22 13:06:42 浏览: 246
Golang-Gin框架示例二十多个源码
在 Golang 的 flag 包中,单个标记默认只支持一个参数。如果要支持多个参数,可以使用 `flag.Var` 函数和自定义类型来实现。
具体的实现步骤如下:
1. 自定义一个类型,实现 `flag.Value` 接口,用于保存多个参数的值。
```go
type multiValue []string
func (mv *multiValue) String() string {
return fmt.Sprintf("%v", *mv)
}
func (mv *multiValue) Set(value string) error {
*mv = append(*mv, value)
return nil
}
```
2. 在 `main` 函数中,定义一个变量作为标记的值,并使用 `flag.Var` 函数将其与自定义类型关联起来。
```go
var m multiValue
flag.Var(&m, "flagName", "usage information")
```
3. 在命令行中使用 `-flagName value1 -flagName value2` 的方式来传递多个参数。
完整的示例代码如下:
```go
package main
import (
"flag"
"fmt"
)
type multiValue []string
func (mv *multiValue) String() string {
return fmt.Sprintf("%v", *mv)
}
func (mv *multiValue) Set(value string) error {
*mv = append(*mv, value)
return nil
}
func main() {
var m multiValue
flag.Var(&m, "flagName", "usage information")
flag.Parse()
fmt.Println("The values of flagName are:", m)
}
```
当在命令行中执行 `go run main.go -flagName value1 -flagName value2` 时,输出结果为:
```
The values of flagName are: [value1 value2]
```
阅读全文