Golang Getopt V2:解析多个重复的标志

问题描述

我是golang的新手,我无法使用getopt版本2找到解决此问题的方法

./example -v i=5 -v j=6 -v k=7 

我要按照此处https://www.gnu.org/software/gawk/manual/html_node/Options.html

的指示使用标志v

解决方法

以下代码能够解析同一标志的多个选项,因此对于上面的示例,它将打印[i = 5 j = 6 k = 7]

package main

import (
  "github.com/pborman/getopt/v2"
  "fmt"
  "runtime"
  "github.com/gthd/helper"
)

var (
  value helper.Helper
)

func init() {
 getopt.FlagLong(&value,"string",'v',"strings")
}

func main() {
  getopt.Parse()
  strings := value.ParseMultipleOptions()
  fmt.Println(strings)
}

辅助文件为

package helper

import (
    "strings"
    "github.com/pborman/getopt/v2"
)

type Helper []string

func (h *Helper) Set(str string,opt getopt.Option) error {
    *h = append(*h,str)
    _ = opt
    return nil
}

func (h *Helper) String() string {
    return strings.Join(h.Array(),",")
}

func (h *Helper) Array() []string {
    return *h
}

func (h *Helper) ParseMultipleOptions() []string {
    return h.Array()
}