Для этого есть пакет
flag
Умеет и значения по-умолчанию и генерировать usage.
В вашем случае это будет вот так:
package main
import (
"flag"
"fmt"
)
func main() {
var a int
var dump string
flag.IntVar(&a, "a", 0, "The integer param")
flag.StringVar(&dump, "dump", "default_dump", "The name of a dump")
flag.Parse()
fmt.Println("a:", a)
fmt.Println("dump:", dump)
}
$ go run main.go -a=2 -dump="hello"
a: 2
dump: hello
$ go run main.go
a: 0
dump: default_dump
$ go run main.go -a=sdf
invalid value "sdf" for flag -a: strconv.ParseInt: parsing "sdf": invalid syntax
Usage of /tmp/go-build682528613/command-line-arguments/_obj/exe/main:
-a int
The integer param
-dump string
The name of a dump (default "default_dump")
exit status 2