Lekcje modułu (5/5)
Wejście/wyjście z fmt
Pakiet fmt biblioteki standardowej jest głównym narzędziem do drukowania
konsoli, formatując ciągi znaków i czytając dane wejściowe. Jeśli użyłeś
printf w C poczujesz się jak w domu, ale z dodatkowym wyrafinowaniem
dzięki czasownikom %v i %T.
Print, Println, Printf: trzy funkcje, trzy zachowania
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)Czasowniki, których będziesz używać przez cały czas
| Czasownik | Co drukuje | Przykład |
|---|---|---|
| KODEF0 | „wartość domyślna” — działa na każdym typie | KODEF1 |
| KODEF2 | jak %v, ale z nazwami pól w strukturach | KODEF4 |
| KODEF5 | Reprezentacja wartości „Go-syntax” | KODEF6 |
| KODEF7 | typ wartości | KODEF8 |
| KODEF9 | liczba całkowita o podstawie 10 | KODEF10 |
| KODEF11 | pływać | KODEF12 |
| KODEF13 | float z 2 miejscami po przecinku | KODEF14 |
| KODEF15 | ciąg | KODEF16 |
| KODEF17 | Ciąg „cytowany” (z cudzysłowami i znakami ucieczki) | KODEF18 |
| KODEF19 | bool | KODEF20 |
| KODEF21 | szesnastkowy (małe litery) | KODEF22 |
| KODEF23 | binarny | KODEF24 |
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: budowanie ciągów znaków bez ich drukowania
Ten sam interfejs co Printf, ale wynik jest zwracany jako plik
KODEF1:
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anniBędziesz go stale używać do tworzenia komunikatów, dzienników i błędów.
Errorf: ciągi znaków + zawijanie błędów
fmt.Errorf tworzy error z formatowaniem w stylu Printf. Z
czasownik specjalny %w, możesz zawinąć istniejący błąd, aby go zachować
chain (omówimy to szczegółowo w module Interfejsy):
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}Twoja kolej
Wydrukuj ciąg „ciao mondo” za pomocą fmt.Println.
Pokaż wskazówkę
`fmt.Println` pobiera ciąg znaków i sam dodaje znak nowej linii.
Rozwiązanie dostępne po 3 próbach
Użyj fmt.Printf, aby wydrukować „eta=36”, po którym następuje znak nowej linii, używając czasownika %d dla liczby całkowitej.
Pokaż wskazówkę
`Printf` nie dodaje nowej linii: musisz uwzględnić ` ` w ciągu formatującym.
Rozwiązanie dostępne po 3 próbach
Który czasownik wypisuje dynamiczny TYP wartości?
fmt.Printf("?\n", 3.14)Podsumowanie
Print/Println/Printfróżnią się spacjami i znakami nowej linii.%vto symbol wieloznaczny, który działa na każdym typie;%+vpokazuje nazwy pól.%Twypisuje typ (przydatne do szybkiego debugowania).Sprintfbuduje ciągi znaków;Errorfgeneruje błędy przy zawijaniu (%w).PrintfNIE dodaje nowej linii: wpisz ją samodzielnie w ciągu formatującym.