2016-05-03 8 views

Antwort

16

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