Golang 中列表的自定义标志
Golang 的标志包允许简单的参数解析,但它通常支持基本类型,如字符串、整数、或布尔值。在使用值列表时,这似乎是有限制的。
Golang 允许通过实现 flag.Value 接口来创建自定义标志。该接口需要实现两个方法:String() 和 Set()。通过为列表定义自定义标志,您可以解析通过命令行标志传递的多个值。
定义自定义列表标志
考虑以下示例:
package main import "flag" import "fmt" type arrayFlags []string // String() implements the flag.Value interface func (i *arrayFlags) String() string { return fmt.Sprintf("%v", *i) } // Set() implements the flag.Value interface func (i *arrayFlags) Set(value string) error { *i = append(*i, value) return nil } var myFlags arrayFlags func main() { flag.Var(&myFlags, "list1", "Some description for this param.") flag.Parse() fmt.Println(myFlags) }
这定义了一个名为 arrayFlags 的自定义标志类型,它接受多个值。该标志绑定到“list1”标志名称,可以使用 flag.Parse() 进行解析。
用法
要使用此自定义标志传递多个值,您可以按如下方式运行该程序:
go run your_file.go --list1 value1 --list1 value2 --list1 value3
这将使用提供的三个值填充 myFlags 变量:[“value1”、“value2”、“value3”]。然后,您可以在程序中访问这些值。
Playground
有关实例,您可以访问以下 Playground:[playground 链接]
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3