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
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
| Verb | Was es druckt | Beispiel |
|---|---|---|
%v | „Standardwert“ – funktioniert bei jedem Typ | {Ada 36} |
%+v | wie %v, aber mit Feldnamen in Strukturen | {Name:Ada Age:36} |
%#v | „Go-Syntax“-Darstellung des Werts | main.User{Name:"Ada", Age:36} |
%T | der Typ des Werts | float64 |
%d | ganze Zahl zur Basis 10 | {Ada 36}0 |
{Ada 36}1 | schweben | {Ada 36}2 |
{Ada 36}3 | Float mit 2 Dezimalstellen | {Ada 36}4 |
{Ada 36}5 | Zeichenfolge | {Ada 36}6 |
{Ada 36}7 | „quoted“-String (mit Anführungszeichen und Escapezeichen) | {Ada 36}8 |
{Ada 36}9 | bool | %+v0 |
%+v1 | hexadezimal (Kleinbuchstaben) | %+v2 |
%+v3 | binär | %+v4 |
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) // float64Sprintf: Strings erstellen, ohne sie zu drucken
Gleiche Schnittstelle wie Printf, aber das Ergebnis wird Ihnen als zurückgegeben
string:
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anniSie 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):
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}Du bist dran
Drucken Sie die Zeichenfolge „ciao mondo“ mit fmt.Println.
Hinweis anzeigen
`fmt.Println` nimmt eine Zeichenfolge und fügt die neue Zeile selbst hinzu.
Lösung nach 3 Versuchen verfügbar
Verwenden Sie fmt.Printf, um „eta=36“ gefolgt von einer neuen Zeile auszugeben, wobei Sie das Verb %d für die Ganzzahl verwenden.
Hinweis anzeigen
`Printf` fügt keinen Zeilenumbruch hinzu: Sie müssen ` ` in die Formatzeichenfolge einschließen.
Lösung nach 3 Versuchen verfügbar
Welches Verb gibt den dynamischen TYPE eines Werts aus?
fmt.Printf("?\n", 3.14)Zusammenfassung
Print/Println/Printfunterscheiden sich in Leerzeichen und Zeilenumbrüchen.%vist der Platzhalter, der bei jedem Typ funktioniert;%+vzeigt Feldnamen an.%Tdruckt den Typ (nützlich für schnelles Debuggen).Sprintferstellt Strings;Errorferstellt Fehler mit Umbruch (%w).Printffügt KEINEN Zeilenumbruch hinzu: Schreiben Sie ihn selbst in die Formatzeichenfolge.