首页 > 后端开发 > Golang > 正文

如何在 Go 中为值列表定义自定义标志类型?

Linda Hamilton
发布: 2024-11-16 18:13:03
原创
927 人浏览过

How to Define a Custom Flag Type for a List of Values in Go?

在 Go 中将值列表放入 Flag 中

在 Go 中,flag 包支持解析命令行参数。然而,它最初只提供有限范围的数据类型(String、Int、Bool)。为了适应更复杂的数据,您可以定义自己的标志类型并使用 flag.Var() 来绑定它。

列表的自定义标志类型

考虑一个标志接受多个值作为列表。首先,定义自定义标志类型:

type arrayFlags []string

// String is an implementation of the flag.Value interface
func (i *arrayFlags) String() string {
    return fmt.Sprintf("%v", *i)
}

// Set is an implementation of the flag.Value interface
func (i *arrayFlags) Set(value string) error {
    *i = append(*i, value)
    return nil
}
登录后复制

使用自定义标志

接下来,声明此类型的变量以与自定义标志绑定:

var myFlags arrayFlags
登录后复制

注册自定义Flag

最后,您可以使用 flag 包注册您的自定义标志:

flag.Var(&myFlags, "list1", "Some description for this param.")
登录后复制

现在,您可以在运行程序时向此标志传递多个值:

go run your_file.go --list1 value1 --list1 value2
登录后复制

更新的代码片段

供参考,请参见此处完整的代码片段:

package main

import (
    "flag"
    "fmt"
)

type arrayFlags []string

// String is an implementation of the flag.Value interface
func (i *arrayFlags) String() string {
    return fmt.Sprintf("%v", *i)
}

// Set is an implementation of 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()
}
登录后复制

以上是如何在 Go 中为值列表定义自定义标志类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板