import ( "github.com/spf13/pflag" "time" ) func main() { fs := pflag.NewFlagSet("myapp", pflag.ExitOnError) var duration time.Duration fs.DurationVar(&duration, "timeout", 30*time.Second, "Timeout for the request") fs.Parse([]string{"--timeout=1m30s"}) fmt.Println(duration) }
import ( "github.com/spf13/pflag" "time" ) func main() { fs := pflag.NewFlagSet("myapp", pflag.ExitOnError) var durations []time.Duration fs.DurationSliceVar(&durations, "durations", []time.Duration{1*time.Second, 2*time.Second}, "List of durations") fs.Parse([]string{"--durations=3s,4s"}) fmt.Println(durations) }In this example, we use the `DurationSliceVar` function to declare a command-line flag called "--durations" that can accept a comma-separated list of `time.Duration` values. We initialize it with two default values, and then parse the command-line arguments using the `Parse` method. Finally, we print the value of `durations`. Overall, the `github.com/spf13/pflag` library is useful for building command-line applications in Go that require flexible and powerful flag parsing features. Its `FlagSet` and `DurationVar` functionalities demonstrate its capability to handle different types of flags with ease.