Verwendung von Sprintf mit Ersetzung identischer Werte
In Sprintf ist die Möglichkeit, alle Variablen in der formatierten Zeichenfolge durch denselben Wert zu ersetzen, möglich, aber erfordert eine Änderung der Formatzeichenfolge.
Explizites Argument Indizes
Der Schlüssel besteht darin, vor jedem Formatierungsverb explizite Argumentindizes zu verwenden. Dadurch können Sie angeben, welches Argument für diese bestimmte Ersetzung verwendet werden soll. In Printf, Sprintf und Fprintf besteht das Standardverhalten darin, die übergebenen Argumente nacheinander zu verwenden. Mit expliziten Argumentindizes, gekennzeichnet durch [n], können Sie jedoch einen bestimmten Argumentindex auswählen.
Beispiel
Betrachten Sie das folgende Beispiel:
val := "foo" s := fmt.Sprintf("%[1]v in %[1]v is %[1]v", val) fmt.Println(s)
Hier verwenden wir den expliziten Argumentindex [1] vor jedem Formatierungsverb. Dies weist Sprintf an, das erste Argument, d. h. val, für alle drei Ersetzungen zu verwenden. Als Ergebnis lautet die Ausgabe:
foo in foo is foo
Einzeilige Vereinfachung
Das obige Beispiel kann auf eine einzelne Zeile vereinfacht werden:
fmt.Printf("%[1]v in %[1]v is %[1]v", "foo")
Ersten Index weglassen
Darüber hinaus können Sie das erste explizite Argument weglassen Index, da er automatisch auf 1 gesetzt ist:
fmt.Printf("%v in %[1]v is %[1]v", "foo")
Durch das Verständnis expliziter Argumentindizes können Sie denselben Wert für mehrere Ersetzungen in Sprintf angeben, unabhängig von der Anzahl der Formatspezifizierer.
Das obige ist der detaillierte Inhalt vonWie kann ich alle Variablen in einem Go Sprintf-String durch denselben Wert ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!