Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Capture args from repeatable flags in Golang pflags package
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
-
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 comment threads