Согласно исходному коду флага , невозможно изменить порядок flag.PrintDefault()
.
Однако вы можете написать пользовательскую функцию flag.Usage
, как в следующем примере:
package main
import (
"flag"
"fmt"
)
func main() {
flag.String("aaa", "foo", "input file of aaa")
flag.String("bbb", "foo", "input file of aaa")
flag.String("mode", "foo", "job's mode")
flag.Usage = func() {
flagSet := flag.CommandLine
fmt.Printf("Custom Usage of %s:\n", "./mytool")
order := []string{"mode", "aaa", "bbb"}
for _, name := range order {
flag := flagSet.Lookup(name)
fmt.Printf("-%s\n", flag.Name)
fmt.Printf(" %s\n", flag.Usage)
}
}
flag.Parse()
}
Выход:
Custom Usage of ./mytool:
-mode
job's mode
-aaa
input file of aaa
-bbb
input file of aaa