如何将值列表放入 Golang 中的标志中?

Golang 与以下 python 命令的等价物是什么?


import argparse

parser = argparse.ArgumentParser(description="something")

parser.add_argument("-getList1",nargs='*',help="get 0 or more values")

parser.add_argument("-getList2",nargs='?',help="get 1 or more values")

我已经看到 flag 包允许在 Golang 中进行参数解析。但它似乎只支持 String、Int 或 Bool。如何以这种格式将值列表放入标志中:


go run myCode.go -getList1 value1 value2 


江户川乱折腾
浏览 208回答 3
3回答

跃然一笑

您可以定义自己的flag.Value并flag.Var()用于绑定它。例子在这里。然后你可以传递多个标志,如下所示:go run your_file.go --list1 value1 --list1 value2UPD:包括代码片段以防万一。package mainimport "flag"type arrayFlags []stringfunc (i *arrayFlags) String() string {    return "my string representation"}func (i *arrayFlags) Set(value string) error {    *i = append(*i, value)    return nil}var myFlags arrayFlagsfunc main() {    flag.Var(&myFlags, "list1", "Some description for this param.")    flag.Parse()}

HUH函数

通过使用该flag.Args()函数,您至少可以在命令的末尾有一个参数列表。package mainimport (    "flag"    "fmt")var one stringfunc main() {    flag.StringVar(&one, "o", "default", "arg one")    flag.Parse()    tail := flag.Args()    fmt.Printf("Tail: %+q\n", tail)}my-go-app -o 1 this is the rest 将打印 Tail: ["this" "is" "the" "rest"]

HUX布斯

使用flag.String()获取所需参数的整个值列表,然后使用strings.Split()将其拆分为单个项目。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go