Capture args from repeatable flags in Golang pflags package
+3
−0
How do I create a flag that can be used multiple times in a command using the pflag
package? For example, let's say I wanted to select multiple fields and did not want to have to use comma-separation with a single flag, but instead something like follows:
cmd -f field1 -f field2 -f field3
I'd want to add each argument passed to an -f
flag into a slice (or into a map[string]struct{}
).
- Is this already built into
pflag
? - How do I accomplish this?
1 answer
+2
−0
-
Yes, this is supported by the flag definition functions with Array or Slice in their names. See the reference docs for pflag.
-
A simple example below:
package main
import (
"fmt"
flag "github.com/spf13/pflag"
)
func main() {
var flagvar []string
flag.StringArrayVarP(&flagvar, "flag", "f", []string{}, "help msg")
flag.Parse()
fmt.Println("Flag slice:", flagvar)
}
>cmd -f a -f b -f c
Flag slice: [a b c]
0 comments