首页 >后端开发 >Golang >如何使用 Golang 中的自定义标志将多个值解析为列表?

如何使用 Golang 中的自定义标志将多个值解析为列表?

Linda Hamilton
Linda Hamilton原创
2024-11-16 07:08:03335浏览

How can I parse multiple values into a list using custom flags in Golang?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn