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 变量: [“值1”,“值2”,“值3”]。然后,您可以在程序中访问这些值。
Playground
有关实例,您可以访问以下游乐场:[playground 链接]
以上是如何使用 Golang 中的自定义标志将多个值解析为列表?的详细内容。更多信息请关注PHP中文网其他相关文章!