Skip to content

flag

Das in Go eingebaute Flag-Paket implementiert das Parsen von Kommandozeilenparametern. Das Flag-Paket macht die Entwicklung von Kommandozeilentools einfacher.

Import

go
import flag

Typen

Es unterstützt folgende Typen:

  • bool
  • int
  • int64
  • uint
  • uint64
  • float
  • float64
  • string
  • duration

Definition

Verwenden Sie flag.Type() zur Definition, der Rückgabewert ist ein Zeiger

go
name := flag.String("name", "Hans", "Name")
age := flag.Int("age", 15, "Alter")
sex := flag.Bool("sex", true, "Geschlecht")

Alternativ kann man flag.TypeVar() verwenden

go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "Hans", "Name")
flag.IntVar(&age, "age", 15, "Alter")
flag.BoolVar(&sex, "sex", true, "Geschlecht")

Parsing

Durch Aufruf von flag.Parse() werden die Parameter geparst. Unterstützte Kommandozeilenparameter-Formate sind:

  • -flag xxx
  • --flag xxx
  • -flag=xxx
  • --flag=xxx

Boolesche Parameter müssen ein Gleichheitszeichen verwenden. Das Flag-Parsing stoppt vor dem ersten Nicht-Kommandozeilenparameter.

Andere

go
func Args() []string // Gibt alle Nicht-Kommandozeilenparameter zurück

func NArg() int // Gibt die Anzahl der Nicht-Kommandozeilenparameter zurück

func NFlag() int // Gibt die Anzahl der Kommandozeilenparameter zurück

Beispiel

go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "Hans", "Name")
flag.IntVar(&age, "age", 15, "Alter")
flag.BoolVar(&sex, "sex", true, "Geschlecht")

flag.Parse()
fmt.Println(name, age, sex)

Nach dem Kompilieren starten Sie das Programm in der Kommandozeile

powershell
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe
Hans 15 true
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -h
Usage of D:\WorkSpace\Code\GoProject\bin\go_build_GoProject_src_main.exe:
  -age int
        Alter (default 15)
  -name string
        Name (default "Hans")
  -sex
        Geschlecht (default true)
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -age 15 -name "Peter" -sex=false
Peter 15 false
PS D:\WorkSpace\Code\GoProject\bin>

Golang by www.golangdev.cn edit