package main import ( "errors" "fmt" "flag" "strconv" ) // The arguments to this program type args struct { Radix uint Compact bool } func parseArgs() (args, error) { var a args flag.BoolVar(&a.Compact, "c", false, "Compact the output display") flag.Parse() if flag.NArg() == 1 { if radix, err := strconv.ParseUint(flag.Arg(0), 0, 0); err == nil { if radix > 1 { a.Radix = uint(radix) return a, nil } else { return args{}, errors.New("Radix must be an integer above 1.") } } else { return args{}, fmt.Errorf( "Argument must be an integer above 1 [%w].", err) } } else if flag.NArg() < 1 { return args{}, errors.New("Please provide an argument (radix to study).") } else { return args{}, errors.New("Too many arguments provided.") } }