Das Flag-Paket ist ein praktisches Paket zum Parsen von Befehlszeilen-Flags.
import "flag"
Bereiten Sie beim Binden an eine Variable mit XxxVar () von init (), die später beschrieben wird, eine Variable zum Speichern des Flags vor.
var boolFlag bool
var intFlag int
var strFlag string
Wenn es nicht an eine Variable mit XxxVar () von init () gebunden ist, die später beschrieben wird, wird es zu einem Zeiger.
boolPtr := flag.Bool("b", false, "Beispiel für einen booleschen Wert")
intPtr := flag.Int("i", 0, "Beispiel für numerische Werte")
strPtr := flag.String("s", "", "Beispiel für Strings")
init () wird ausgeführt, bevor main () aufgerufen wird. Der in main durch flag.Parse () angegebene Wert des Flags, der in main beschrieben ist, wird eingegeben, aber der Wert ist zum Zeitpunkt von init noch nicht in der Variablen eingegeben. Daher besteht das Verhalten hier nur darin, einen Zeiger zum Speichern des Werts des Flags zu reservieren. Mit XxxVar () an eine Variable binden. Beschreiben Sie den Zeiger der Variablen, den Namen des Flags, den Standardwert und die Erläuterung seiner Verwendung im Argument.
func init() {
flag.BoolVar(&boolFlag, "b", false, "Geben Sie einen booleschen Wert an")
flag.IntVar(&intFlag, "i", 0, "Geben Sie einen numerischen Wert an")
flag.StringVar(&strFlag, "s", "", "Geben Sie den Wert der Zeichenfolge an")
}
Durch Aufrufen von flag.Parse () werden die Befehlszeilenargument-Flags analysiert und an Variablen gebunden.
flag.Parse()
Danach kann der Wert des Flags aus der Variablen erhalten werden.
#Keine Flagge angegeben
go run flagsample.go
#Mit angegebenem Flag
go run flagsample.go -b
go run flagsample.go -b -i=1 -s=a
#Kompilieren Sie das Programm und
go build flagsample.go
#Führen Sie dann die Binärdatei aus.
./flagsample -b -i=1 -s=a
Schreiben beim Definieren außerhalb der Funktion
package main
import (
"flag"
"fmt"
)
var boolFlag bool
var intFlag int
var strFlag string
func init() {
flag.BoolVar(&boolFlag, "b", false, "Beispiel für einen booleschen Wert")
flag.IntVar(&intFlag, "i", 0, "Beispiel für numerische Werte")
flag.StringVar(&strFlag, "s", "", "Beispiel für Strings")
}
func main() {
flag.Parse()
fmt.Println(boolFlag)
fmt.Println(intFlag)
fmt.Println(strFlag)
}
Wie in der Funktion definiert zu schreiben
package main
import (
"flag"
"fmt"
)
func main() {
boolPtr := flag.Bool("b", false, "Beispiel für einen booleschen Wert")
intPtr := flag.Int("i", 0, "Beispiel für numerische Werte")
strPtr := flag.String("s", "", "Beispiel für Strings")
flag.Parse()
fmt.Println(*boolPtr)
fmt.Println(*intPtr)
fmt.Println(*strPtr)
}
Recommended Posts