zurückkehren Es ist möglich, aber die Format-String geändert werden muss, müssen Sie explicit argument indicies verwenden:
Explicit Argument Indizes:
In Printf, Sprintf und Fprintf besteht das Standardverhalten für jedes Formatierungsverb darin, aufeinanderfolgende Argumente zu formatieren, die im Aufruf übergeben wurden. Die Notation [n] unmittelbar vor dem Verb zeigt jedoch an, dass das n-te ein-indizierte Argument stattdessen zu formatieren ist. Die gleiche Notation vor einem '*' für eine Breite oder Genauigkeit wählt den Argument-Index aus, der den Wert enthält. Nach der Verarbeitung eines in Klammern gesetzten Ausdrucks [n] verwenden nachfolgende Verben die Argumente n + 1, n + 2 usw., sofern nicht anders angegeben.
Ihr Beispiel:
val := "foo"
s := fmt.Sprintf("%[1]v in %[1]v is %[1]v", val)
fmt.Println(s)
Output (versuchen Sie es auf dem Go Playground):
foo in foo is foo
Natürlich kann das obige Beispiel einfach in eine Zeile geschrieben werden:
fmt.Printf("%[1]v in %[1]v is %[1]v", "foo")
Auch als eine geringfügige Vereinfachung, die erste expli Der cit-Argument-Index kann weggelassen werden, da er standardmäßig 1
:
fmt.Printf("%v in %[1]v is %[1]v", "foo")
ist