flag-Paket in der Go - muss ich immer Standard-Wert?
Ist es nicht möglich, set default-Wert in der flag Paket-in Gehen? Zum Beispiel, in flag-Paket können Sie schreiben die folgende Zeile:
filename := flag.String("file", "test.csv", "Filename to cope with")
In dem obigen code, ich möchte nicht unbedingt festgelegt, default-Wert, der test.csv
in diesem Fall, und stattdessen immer Benutzer geben Sie Ihren eigenen Namen an und wenn es nicht angegeben ist, dann möchte ich auf einen Fehler verursachen und das Programm beenden.
Einer von der Art, wie ich kam ist, dass ich zuerst überprüfen Sie den Wert der filename
nach flag.Parse()
, und wenn es das Wert ist test.csv
dann habe ich das Programm beendet sich mit der entsprechenden Fehlermeldung. Jedoch möchte ich nicht zu schreiben, wie redundante code, wenn es kann umgangen werden - und selbst wenn er es nicht kann, würde ich gerne hören, einen besseren Weg zu bewältigen mit dem Problem hier.
Du tun können diese Art von Operationen in Python argparse
Modul by the way - ich will einfach nur zu implementieren, die ähnliche Sache, wenn ich kann...
Außerdem kann ich implementieren, die sowohl kurze und lange Argumente (in anderen Worten: beide -f
und -file
argument?) im flag-Paket?
Dank.
InformationsquelleAutor Blaszard | 2013-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass es idiomatische, um Ihre design-flag-Werte in einer Weise, die bedeutet "nicht vorhanden", wenn gleich der null-Wert der jeweiligen Arten. Zum Beispiel:
Ad die 2. Frage: IINM, das flag-Paket von design unterscheidet nicht zwischen
-flag
und--flag
. IOW, können Sie beides haben-f
und--file
in Ihre Flagge setzen und schreiben, die eine beliebige version von-
oder--
bevor beidef
undfile
. Bedenkt man allerdings, eine andere definierte flag-g
das flag-Paket wird nicht erkennen-gf foo
als equvalent von-g -f foo
.Hat die
flag
Paket bieten eine Möglichkeit, zu prüfen, ob ein flag gesetzt ist? Ich spreche nicht über die default-Werte oder keine Werte. Ich meine, ob ein flag vorhanden ist, in der Befehlszeile.Sie können die Besuchen - Funktion.
InformationsquelleAutor zzzz
Wenn ich eine Flagge, nicht einen Standard-Wert, den ich oft verwenden Sie den Wert
REQUIRED
oder etwas ähnliches. Ich finde das macht die--help
leichter zu Lesen.Als für, warum es nicht gebacken, ich vermute, es war einfach nicht wichtig genug. Der Standard würde nicht passen. Jedoch, die
--help
Flagge ist ähnlich, es passt nicht jeder brauchen, aber es ist gut genug die meiste Zeit.Das ist nicht zu sagen, die benötigten flags sind eine schlechte Idee. Wenn Sie leidenschaftlich genug eine
flagutil
Paket könnte nett sein. Wickeln Sie die aktuellenflag
api, machenParse
einen Fehler zurück, der beschreibt, die fehlende Flagge und fügen Sie eineRequiredInt
undRequiredIntVar
etc. Wenn es stellt sich heraus, nützlich zu sein /beliebt ist, könnte es sein verschmolzen mit der offiziellenflag
Paket.flagutil
Paket. Ich werde give it a shot.InformationsquelleAutor deft_code