Przejdź do głównej treści
eLearner.app
Moduł 1 · Lekcja 5 z 55/50 w kursie~10 min
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

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)

Czasowniki, których będziesz używać przez cały czas

CzasownikCo drukujePrzykład
KODEF0„wartość domyślna” — działa na każdym typieKODEF1
KODEF2jak %v, ale z nazwami pól w strukturachKODEF4
KODEF5Reprezentacja wartości „Go-syntax”KODEF6
KODEF7typ wartościKODEF8
KODEF9liczba całkowita o podstawie 10KODEF10
KODEF11pływaćKODEF12
KODEF13float z 2 miejscami po przecinkuKODEF14
KODEF15ciągKODEF16
KODEF17Ciąg „cytowany” (z cudzysłowami i znakami ucieczki)KODEF18
KODEF19boolKODEF20
KODEF21szesnastkowy (małe litery)KODEF22
KODEF23binarnyKODEF24
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: budowanie ciągów znaków bez ich drukowania

Ten sam interfejs co Printf, ale wynik jest zwracany jako plik KODEF1:

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

Bę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):

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

Twoja kolej

Ćwiczenie#go.m1.l5.e1
Próby: 0Ładowanie...

Wydrukuj ciąg „ciao mondo” za pomocą fmt.Println.

Ładowanie edytora...
Pokaż wskazówkę

`fmt.Println` pobiera ciąg znaków i sam dodaje znak nowej linii.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#go.m1.l5.e2
Próby: 0Ładowanie...

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.

Ładowanie edytora...
Pokaż wskazówkę

`Printf` nie dodaje nowej linii: musisz uwzględnić ` ` w ciągu formatującym.

Rozwiązanie dostępne po 3 próbach

Quiz#go.m1.l5.e3
Gotowe

Który czasownik wypisuje dynamiczny TYP wartości?

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

Podsumowanie

  • Print/Println/Printf różnią się spacjami i znakami nowej linii.
  • %v to symbol wieloznaczny, który działa na każdym typie; %+v pokazuje nazwy pól.
  • %T wypisuje typ (przydatne do szybkiego debugowania).
  • Sprintf buduje ciągi znaków; Errorf generuje błędy przy zawijaniu (%w).
  • Printf NIE dodaje nowej linii: wpisz ją samodzielnie w ciągu formatującym.