Übergabe variabler Parameter an Sprintf in Go
In Go erwartet die Sprintf-Funktion, dass ihre Variablenargumente vom Typ []interface{} sind. . Dies kann eine Einschränkung sein, wenn Sie mit Slices anderer Typen arbeiten, z. B. []string.
Betrachten Sie den folgenden Code, der versucht, ein String-Slice an Sprintf zu übergeben:
<code class="go">s := []string{"a", "b", "c", "d"} fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3])</code>
Das Ausführen dieses Codes führt zu folgendem Fehler:
cannot use v (type []string) as type []interface {} in argument to fmt.Printf
Um diesen Fehler zu beheben, muss das Slice in den Typ []interface{} konvertiert werden. Dies kann manuell erfolgen, wie unten gezeigt:
<code class="go">ss := []string{"a", "b", "c"} is := make([]interface{}, len(ss)) for i, v := range ss { is[i] = v }</code>
Alternativ kann ein String-Slice von Anfang an als []interface{} deklariert werden:
<code class="go">is := []interface{}{"a", "b", "c"}</code>
Mit dem Slice In den richtigen Typ konvertiert, kann Sprintf nun zum Formatieren der Variablenargumente verwendet werden:
<code class="go">fmt.Printf("%5s %4s %3s\n", is[1], is[2], is[3])</code>
Ausgabe:
b c d
Durch Konvertieren des String-Segments in []interface{}, Es wird möglich, bequem mehrere Argumente an Sprintf zu übergeben.
Das obige ist der detaillierte Inhalt vonWie übergebe ich variable Parameter an Sprintf in Go mit String-Slices?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!