Strings formatieren in Go
Da sich Go ja an die C/C++-Syntax anlehnt, folgt es auch der »printf«-Tradition, was es aber auch weniger »elegant« macht, als z.B. die String-Formatierung in Python oder JavaScript.
fmt.Printf()
gibt die formatierte Zeichenkette auf der Standardausgabe (meist also die Konsole) aus.fmt.Sprintf()
gibt den formatierten String zurück.
Um die Zeichenkette aufzubauen, gibt es verschiedene Platzhalter, welche in beiden obigen Funktionen funktionieren:
- %v gibt die Standardrepräsentation des Wertes zurück. Beispiel:
s1 := fmt.Sprintf("Boris ist %v Jahre alt", 10)
// Boris ist 10 Jahre alt
s2 := fmt.Sprintf("Boris ist %v Jahre alt", "zehn")
// Boris ist zehn Jahre alt
- %s steht für einen String
s := fmt.Sprintf("Boris ist %s Jahre alt", "zehn")
// Boris ist zehn Jahre alt
- %d hält den Platz für einen Integer frei:
s := fmt.Sprintf("Boris ist %d Jahre alt", 10)
// Boris ist 10 Jahre alt
- %f steht entsprechend für eine Fließkommazahl, wobei auch angegeben werden kann, wie viele Nachkommastellen angezeigt werden sollen:
s1 := fmt.Sprintf("Boris ist %f Jahre alt", 10.5932)
// Boris ist 10.593200 Jahre alt
s2 := fmt.Sprintf("Boris ist %.2f Jahre alt", 10.5932)
// Boris ist 10.59 Jahre alt
Wenn man sich unsicher ist, welchen Option man nehmen sollte, kann man (fast) immer %v
nehmen.
Um Fehler während des Kompilierens schon zu erkennen und abfangen zu können, bieten sich natürlich die typspezifischen Platzhalter an.
Alle Format-Optionen stehen in der offiziellen Dokumentation (engl.).