Sprintf und Fprintf
In Strings und Writer formatieren
Sprintf und Fprintf ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Die Printf-Familie
Das Paket fmt bietet drei verwandte Formatierungsfunktionen:
Printfschreibt in die Standardausgabe.Sprintfgibt eine formatierte Zeichenkette zurück.Fprintfschreibt in einen beliebigen Writer.
package main
import "fmt"
func main() {
fmt.Printf("hello %s\n", "world")
}Sprintf gibt eine Zeichenkette zurück
fmt.Sprintf formatiert genau wie Printf, gibt das Ergebnis aber nicht aus, sondern liefert es als Zeichenkette zurück, die Sie speichern oder wiederverwenden können.
package main
import "fmt"
func main() {
msg := fmt.Sprintf("%s scored %d", "Bob", 95)
fmt.Println(msg)
}Bezeichner erstellen
Sprintf ist praktisch, um Schlüssel, Dateinamen oder Beschriftungen aus mehreren Teilen zusammenzusetzen.
package main
import "fmt"
func main() {
id := fmt.Sprintf("user-%04d", 42)
fmt.Println(id)
}Zahlen in Text formatieren
Verwenden Sie Sprintf, um Zahlen in ansprechend formatierte Zeichenketten umzuwandeln, zum Beispiel für Währungsbeträge.
package main
import "fmt"
func main() {
label := fmt.Sprintf("Price: $%.2f", 7.5)
fmt.Println(label)
}Fprintf schreibt in einen Writer
fmt.Fprintf erwartet als erstes Argument einen io.Writer und formatiert die Ausgabe darin. os.Stdout ist ein solcher Writer.
package main
import (
"fmt"
"os"
)
func main() {
fmt.Fprintf(os.Stdout, "to stdout: %d\n", 1)
}In die Standardfehlerausgabe schreiben
Senden Sie Diagnosemeldungen mit Fprintf an os.Stderr, damit sie von der normalen Ausgabe getrennt bleiben.
package main
import (
"fmt"
"os"
)
func main() {
fmt.Fprintf(os.Stderr, "warning: %s\n", "low disk")
}Fprintf in einen Builder
Da strings.Builder ebenfalls ein io.Writer ist, können Sie direkt hineinformatieren und am Ende die Zeichenkette auslesen.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
fmt.Fprintf(&b, "%s=%d;", "x", 10)
fmt.Fprintf(&b, "%s=%d", "y", 20)
fmt.Println(b.String())
}Fprintf in einen bytes.Buffer
Ein bytes.Buffer ist ein weiteres häufig verwendetes Schreibziel. Bauen Sie den Inhalt schrittweise auf und wandeln Sie ihn anschließend in eine Zeichenkette um.
package main
import (
"bytes"
"fmt"
)
func main() {
var buf bytes.Buffer
fmt.Fprintf(&buf, "row %d\n", 1)
fmt.Fprintf(&buf, "row %d\n", 2)
fmt.Print(buf.String())
}Sprint und Fprint ohne f
Die f-Varianten erwarten eine Formatzeichenkette. Lassen Sie das f bei Sprint/Fprint weg; diese Funktionen verketten Argumente einfach mit der Standardformatierung.
package main
import "fmt"
func main() {
s := fmt.Sprint("a", 1, true)
fmt.Println(s)
}Sprintln fügt Leerzeichen hinzu
fmt.Sprintln verbindet Argumente mit Leerzeichen, fügt einen Zeilenumbruch an und gibt die Zeichenkette zurück.
package main
import "fmt"
func main() {
s := fmt.Sprintln("x", 1, "y", 2)
fmt.Print(s)
}Das richtige Werkzeug auswählen
Wählen Sie das Werkzeug anhand des Ziels:
- Sie benötigen eine Zeichenkette? Verwenden Sie
Sprintf. - Sie schreiben in stdout? Verwenden Sie
Printf. - Sie schreiben in eine Datei, einen Buffer oder den Fehlerstrom? Verwenden Sie
Fprintf.
package main
import (
"fmt"
"os"
)
func main() {
s := fmt.Sprintf("count=%d", 3)
fmt.Fprintf(os.Stdout, "%s\n", s)
}Schnelltest
Welche Funktion gibt den formatierten Text zurück, statt ihn auszugeben?
Rückblick: Sprintf und Fprintf
Sie haben die Formatierungsfamilie kennengelernt:
Sprintfgibt eine Zeichenkette zurück.Fprintfschreibt in jedenio.Writer(stdout, stderr, Buffer, Builder).- Die Varianten ohne
fverwenden die Standardformatierung.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
fmt.Fprintf(&b, "result=%s", fmt.Sprintf("%d%%", 80))
fmt.Println(b.String())
}Häufig gestellte Fragen
Ist die Lektion „Sprintf und Fprintf“ kostenlos?
Ja — der vollständige Text von „Sprintf und Fprintf“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Sprintf und Fprintf“?
In Strings und Writer formatieren Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Sprintf und Fprintf“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Printf-Formatverben
- Sprintf und Fprintf
- Das Stringer-Interface
- Eingaben scannen