Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist die Golang-Flagge?

Was ist die Golang-Flagge?

(*-*)浩
(*-*)浩Original
2019-12-03 10:09:592912Durchsuche

Was ist die Golang-Flagge?

Es gibt viele Möglichkeiten, Befehlszeilenparameter in Golang-Programmen zu verarbeiten. In einfachen Fällen können Sie os.Args direkt verarbeiten, ohne eine Bibliothek zu verwenden. Tatsächlich stellt die Standardbibliothek von Golang das Flag-Paket zur Verarbeitung von Befehlszeilenparametern bereit. Es gibt auch Bibliotheken von Drittanbietern zur Verarbeitung von Befehlszeilenparametern.

Flag-Paket bietet eine Reihe funktionaler Schnittstellen zum Parsen von Befehlszeilenparametern           (empfohlenes Lernen: go)

Befehl Zeilensyntax

Die Befehlszeilensyntax hat hauptsächlich die folgenden Formen

-flag //只支持bool类型
-flag=x
-flag x //只支持非bool类型

Die obige Syntax hat jedoch den gleichen Effekt für ein oder zwei „-“-Zeichen Es ist zu beachten, dass im dritten Fall nur Nicht-Bool-Typen unterstützt werden. Der Grund dafür ist, dass

cmd -x *

* 0 ist. False kann einen Dateinamen oder eine Datei darstellen. oder es kann den Wert des x-Tags darstellen. Wenn es 0 oder falsch ist, tritt Mehrdeutigkeit auf. Daher wird festgelegt, dass der dritte Typ nur Nicht-Bool-Typen unterstützt. Für ganzzahlige Flags können zulässige Werte 1234, 0664, 0x1234 oder negative Zahlen usw. sein. Für das boolesche Flag kann es 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False usw. sein.

Befehlszeilenparameter-Analysemethode

Die Verwendung von Flag umfasst hauptsächlich die folgenden Schritte

Es gibt drei Möglichkeiten, Flag-Parameter zu definieren

Durch flag.String( ), Bool(), Int() und andere flag.Xxx()-Methoden, diese Methode gibt einen entsprechenden Zeiger

import "flag"
var ip = flag.Int("flagname", 1234, "help message for flagname")

zurück. Binden Sie das Flag über das Flag an eine Variable, z. B.

var flagvar int
func init() {
    flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
}

bindet einen benutzerdefinierten Typ über flag.Var(). Der benutzerdefinierte Typ muss die Value-Schnittstelle implementieren (Receives muss ein Zeiger sein), z. B.

flag.Var(&flagVal, "name", "help message for flagname")

für diesen Flag-Typ. Der Standardwert ist der Anfangswert Wert des Variablentyps

Rufen Sie flag.Parse() auf, um die Befehlszeilenparameter auf das definierte Flag zu analysieren

flag.Parse()

Die Analysefunktion trifft auf die erste Nicht-Flag-Befehlszeile. Stoppen Sie, wenn der Parameter Nicht-Flag-Befehlszeilenparameter beziehen sich auf Parameter, die nicht der Befehlszeilensyntax entsprechen. Der Befehlszeilenparameter ist beispielsweise cmd --flag=true abc und der erste Nicht-Flag-Befehlszeilenparameter ist „abc“.

Nach dem Aufruf von Parse zum Parsen können Sie direkt das Flag selbst (Zeigertyp) oder die gebundene Variable (Werttyp) verwenden.

fmt.Println("ip has value ", *ip)
fmt.Println("flagvar has value ", flagvar)

Sie können auch nicht standardmäßige Flags über flag.Args erhalten (), flag.Arg(i) Flag-Befehlszeilenparameter

Das obige ist der detaillierte Inhalt vonWas ist die Golang-Flagge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn