0Pricing
Go Academy · Lektion

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:

  • Printf schreibt in die Standardausgabe.
  • Sprintf gibt eine formatierte Zeichenkette zurück.
  • Fprintf schreibt 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:

  • Sprintf gibt eine Zeichenkette zurück.
  • Fprintf schreibt in jeden io.Writer (stdout, stderr, Buffer, Builder).
  • Die Varianten ohne f verwenden 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

  1. Printf-Formatverben
  2. Sprintf und Fprintf
  3. Das Stringer-Interface
  4. Eingaben scannen
← Zurück zu Go Academy