Direkt zum Hauptinhalt springen
eLearner.app
Modul 1 · Lektion 5 von 55/50 im Kurs~10 min
Lektionen des Moduls (5/5)

Ein-/Ausgabe mit fmt

Das fmt-Paket der Standardbibliothek ist Ihr Hauptwerkzeug zum Drucken der Konsole, Formatieren von Zeichenfolgen und Lesen von Eingaben. Wenn Sie verwendet haben Mit printf in C werden Sie sich wie zu Hause fühlen, aber mit etwas mehr Raffinesse Dank der Verben %v und %T.

Print, Println, Printf: drei Funktionen, drei Verhaltensweisen

Go
fmt.Print("ciao ", "mondo")    // "ciao mondo"  (niente newline finale)
fmt.Println("ciao", "mondo")   // "ciao mondo\n" (newline + spazi tra argomenti)
fmt.Printf("eta=%d\n", 36)     // "eta=36\n"    (format string esplicita)

Die Verben, die Sie ständig verwenden werden

VerbWas es drucktBeispiel
%v„Standardwert“ – funktioniert bei jedem Typ{Ada 36}
%+vwie %v, aber mit Feldnamen in Strukturen{Name:Ada Age:36}
%#v„Go-Syntax“-Darstellung des Wertsmain.User{Name:"Ada", Age:36}
%Tder Typ des Wertsfloat64
%dganze Zahl zur Basis 10{Ada 36}0
{Ada 36}1schweben{Ada 36}2
{Ada 36}3Float mit 2 Dezimalstellen{Ada 36}4
{Ada 36}5Zeichenfolge{Ada 36}6
{Ada 36}7„quoted“-String (mit Anführungszeichen und Escapezeichen){Ada 36}8
{Ada 36}9bool%+v0
%+v1hexadezimal (Kleinbuchstaben)%+v2
%+v3binär%+v4
Go
u := struct{ Name string; Age int }{"Ada", 36}
fmt.Printf("%v\n", u)   // {Ada 36}
fmt.Printf("%+v\n", u)  // {Name:Ada Age:36}
fmt.Printf("%T\n", 3.14) // float64

Sprintf: Strings erstellen, ohne sie zu drucken

Gleiche Schnittstelle wie Printf, aber das Ergebnis wird Ihnen als zurückgegeben string:

Go
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anni

Sie werden es ständig verwenden, um Meldungen, Protokolle und Fehler zu erstellen.

Errorf: Zeichenfolgen + Fehlerumbruch

fmt.Errorf erstellt einen error mit einer Formatierung im Printf-Stil. Mit dem Mit dem speziellen Verb %w können Sie einen vorhandenen Fehler umbrechen, um ihn beizubehalten Kette (wir werden dies im Schnittstellenmodul ausführlich behandeln):

Go
if _, err := os.Open("missing"); err != nil {
    return fmt.Errorf("apertura config: %w", err)
}

Du bist dran

Übung#go.m1.l5.e1
Versuche: 0Wird geladen…

Drucken Sie die Zeichenfolge „ciao mondo“ mit fmt.Println.

Editor wird geladen…
Hinweis anzeigen

`fmt.Println` nimmt eine Zeichenfolge und fügt die neue Zeile selbst hinzu.

Lösung nach 3 Versuchen verfügbar

Übung#go.m1.l5.e2
Versuche: 0Wird geladen…

Verwenden Sie fmt.Printf, um „eta=36“ gefolgt von einer neuen Zeile auszugeben, wobei Sie das Verb %d für die Ganzzahl verwenden.

Editor wird geladen…
Hinweis anzeigen

`Printf` fügt keinen Zeilenumbruch hinzu: Sie müssen ` ` in die Formatzeichenfolge einschließen.

Lösung nach 3 Versuchen verfügbar

Quiz#go.m1.l5.e3
Bereit

Welches Verb gibt den dynamischen TYPE eines Werts aus?

Go
fmt.Printf("?\n", 3.14)
Antwortoptionen

Zusammenfassung

  • Print/Println/Printf unterscheiden sich in Leerzeichen und Zeilenumbrüchen.
  • %v ist der Platzhalter, der bei jedem Typ funktioniert; %+v zeigt Feldnamen an.
  • %T druckt den Typ (nützlich für schnelles Debuggen).
  • Sprintf erstellt Strings; Errorf erstellt Fehler mit Umbruch (%w).
  • Printf fügt KEINEN Zeilenumbruch hinzu: Schreiben Sie ihn selbst in die Formatzeichenfolge.