为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
江户川乱折腾 2021-09-13 15:29:12
Golang 与以下 python 命令的等价物是什么?import argparseparser = 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 
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

您可以定义自己的flag.Value并flag.Var()用于绑定它。


例子在这里。


然后你可以传递多个标志,如下所示:


go run your_file.go --list1 value1 --list1 value2

UPD:包括代码片段以防万一。


package main


import "flag"


type arrayFlags []string


func (i *arrayFlags) String() string {

    return "my string representation"

}


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()

}


查看完整回答
反对 回复 2021-09-13
?
HUH函数

TA贡献1836条经验 获得超4个赞

通过使用该flag.Args()函数,您至少可以在命令的末尾有一个参数列表。


package main


import (

    "flag"

    "fmt"

)


var one string


func 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"]


查看完整回答
反对 回复 2021-09-13
?
HUX布斯

TA贡献1876条经验 获得超6个赞

使用flag.String()获取所需参数的整个值列表,然后使用strings.Split()将其拆分为单个项目。


查看完整回答
反对 回复 2021-09-13
  • 3 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信