Einzelne Variablen in Sprintf durch denselben Wert ersetzen
In fmt.Sprintf() können Argumentindizes explizit mit der Notation [n.] angegeben werden ], wodurch verschiedene Variablen an unterschiedlichen Positionen in der formatierten Zeichenfolge ersetzt werden können. Die Verwendung dieses Ansatzes zum Ersetzen aller Variablen durch denselben Wert erfordert jedoch eine geringfügige Änderung der Formatzeichenfolge.
Lösung:
Anstatt sich auf aufeinanderfolgende Argumente zu verlassen, verwenden Sie Argumentindizes in Klammern vor jedem Formatierungsverb, um anzugeben, dass dasselbe Argument verwendet werden soll:
val := "foo" s := fmt.Sprintf("%[1]v in %[1]v is %[1]v", val)
Diese Formatzeichenfolge gibt an, dass Argumentindex 1 verwendet werden soll für alle drei Formatierungsverben, was zu Folgendem führt:
"foo in foo is foo"
Vereinfachte Optionen:
Der erste explizite Argumentindex kann weggelassen werden, da er standardmäßig 1 ist:
fmt.Printf("%v in %[1]v is %[1]v", "foo")
Zusätzlich können die Klammern und der Argumentindex zu einem einzigen zusammengefasst werden string:
fmt.Printf("%v in %1v is %1v", "foo")
Fazit:
Durch die Verwendung expliziter Argumentindizes ist es möglich, alle Variablen in fmt.Sprintf() durch denselben Wert zu ersetzen, vorausgesetzt größere Flexibilität bei der Formatierung von Zeichenfolgen.
Das obige ist der detaillierte Inhalt vonWie kann ich alle Variablen in fmt.Sprintf() durch denselben Wert ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!