package main import ( "fmt" "log" "git.trj.tw/golang/argparse" ) func main() { fmt.Println("argparse example") opts := []string{ "-f", "/config.yml", "-v", "--port", "3000", "--float", "1.23", "-n", "name!!", "-i", "item1", "-i", "item2", "-h", } p := argparse.New() var configPath string var versionFlag bool var port int var floatVal float64 var name *string var sarr []string var missReq int _ = missReq p.BoolVar(&versionFlag, "v", "version", nil) p.StringVar(&configPath, "f", "config", nil) p.IntVar(&port, "p", "port", nil) p.FloatVar(&floatVal, "ff", "float", nil) p.StringSliceVar(&sarr, "i", "item", nil) // uncomment to test required arg missing // p.IntVar(&missReq, "m", "miss", &argparse.Option{Require: true}) p.Help("h", "help") name = p.String("n", "name", nil) err := p.Parse(opts) if err != nil { log.Fatal(err) } fmt.Printf( "Config: %s\nVersionFlag: %v\nPort: %d\nFloatVal: %f\nName: %s\nItems: %v\n", configPath, versionFlag, port, floatVal, *name, sarr, ) }