Go
Analysieren von Befehlszeilenargumenten und Flags
Suche…
Kommandozeilenargumente
Das Analysieren von Befehlszeilenargumenten ist Go ist anderen Sprachen sehr ähnlich. In Ihrem Code greifen Sie einfach auf die Argumente zu, wobei das erste Argument der Name des Programms selbst ist.
Schnelles Beispiel:
package main
import (
"fmt"
"os"
)
func main() {
progName := os.Args[0]
arguments := os.Args[1:]
fmt.Printf("Here we have program '%s' launched with following flags: ", progName)
for _, arg := range arguments {
fmt.Printf("%s ", arg)
}
fmt.Println("")
}
Und Ausgabe wäre:
$ ./cmd test_arg1 test_arg2
Here we have program './cmd' launched with following flags: test_arg1 test_arg2
Jedes Argument ist nur eine Zeichenfolge. Im os
Paket sieht das so aus: var Args []string
Flaggen
Go - Standardbibliothek bietet Paket - flag
, die mit Parsing - Flags übergeben Programm hilft.
Beachten Sie, dass das flag
Paket keine üblichen Flags im GNU-Stil enthält. Das bedeutet , dass mehrbuchstabigen Fahnen müssen mit Bindestrich wie diese gestartet werden: -exampleflag
, das nicht: --exampleflag
. Flaggen im GNU-Stil können mit einem Drittanbieter-Paket erstellt werden.
package main
import (
"flag"
"fmt"
)
func main() {
// basic flag can be defined like this:
stringFlag := flag.String("string.flag", "default value", "here comes usage")
// after that stringFlag variable will become a pointer to flag value
// if you need to store value in variable, not pointer, than you can
// do it like:
var intFlag int
flag.IntVar(&intFlag, "int.flag", 1, "usage of intFlag")
// after all flag definitions you must call
flag.Parse()
// then we can access our values
fmt.Printf("Value of stringFlag is: %s\n", *stringFlag)
fmt.Printf("Value of intFlag is: %d\n", intFlag)
}
flag
hilft uns Nachricht:
$ ./flags -h
Usage of ./flags:
-int.flag int
usage of intFlag (default 1)
-string.flag string
here comes usage (default "default value")
Mit allen Flaggen anrufen:
$ ./flags -string.flag test -int.flag 24
Value of stringFlag is: test
Value of intFlag is: 24
Anruf mit fehlenden Flags:
$ ./flags
Value of stringFlag is: default value
Value of intFlag is: 1