如何定义自定义标志类型来处理 Golang 中的列表参数
Python 的 argparse 模块提供了 nargs 参数来指定值的数量处理列表时进行解析。 Golang 的 flag 包虽然支持基本类型,但没有提供直接接受列表的方法。以下是如何定义自己的标志类型来解决这个问题:
创建自定义数组标志类型:
Golang 程序可以通过实现标志来创建自己的标志类型.值接口。以下代码定义了一个 arrayFlags 类型来处理字符串数组:
type arrayFlags []string // String implements the flag.Value interface to convert the flag value to a string func (i *arrayFlags) String() string { return fmt.Sprintf("%v", *i) } // Set implements the flag.Value interface to update the flag value when a new argument is provided func (i *arrayFlags) Set(value string) error { *i = append(*i, value) return nil }
利用自定义标记类型:
要使用自定义数组标记类型,您可以使用 flag.Var() 函数。这是一个示例:
var myFlags arrayFlags func main() { flag.Var(&myFlags, "list1", "Some description for this param.") flag.Parse() }
解析多个标志:
您可以像这样传递多个标志:
go run your_file.go --list1 value1 --list1 value2
myFlags 变量将现在包含传递给 list1 标志的值,使您可以访问值列表。
以上是如何创建自定义标志类型来处理 Golang 中的列表参数?的详细内容。更多信息请关注PHP中文网其他相关文章!