Перейти до основного вмісту
Модуль 1 · Урок 5 із 55/50 у курсі~10 min
Модульні уроки (5/5)

Введення/виведення з fmt

Пакет fmt стандартної бібліотеки є основним інструментом для друку на консоль, рядки форматування та читання введених даних. Якщо ви використовували printf в C ви почуватиметеся як удома, але з деякими додатковими вишуканостями завдяки дієсловам %v та %T.

Print, Println, Printf: три функції, три поведінки

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)

Дієслова, які ви будете використовувати весь час

ДієсловоЩо він друкуєПриклад
%v"default value" — працює на будь-якому типі{Ada 36}
%+vяк %v, але з назвами полів у структурах{Name:Ada Age:36}
%#v«Go-синтаксис» представлення значенняmain.User{Name:"Ada", Age:36}
%Tвид значенняfloat64
%dціле число за основою 1042
%fплавати3.140000
%.2ffloat з 2 десятковими3.14
%sрядокAda
%qрядок "у лапках" (з лапками та екранованими символами)"Ada\n"
%tbooltrue
%xшістнадцятковий (маленький)2a
%bдвійковий101010
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: створення рядків без їх друку

Той самий інтерфейс, що й Printf, але результат повертається вам як string:

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

Ви постійно використовуватимете його для створення повідомлень, журналів і помилок.

Errorf: рядки + обгортання помилок

fmt.Errorf створює error з форматуванням у стилі Printf. З спеціальним дієсловом %w ви можете загорнути існуючу помилку, щоб зберегти її ланцюг (ми детально розглянемо це в модулі інтерфейсів):

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

Ваша черга

вправи#go.m1.l5.e1
Спроби: 0Завантаження…

Надрукуйте рядок "ciao mondo" за допомогою fmt.Println.

Завантаження редактора…
Показати підказку

`fmt.Println` приймає рядок і додає сам новий рядок.

Рішення доступне після 3 спроб

вправи#go.m1.l5.e2
Спроби: 0Завантаження…

Використовуйте fmt.Printf, щоб надрукувати 'eta=36' після нового рядка, використовуючи дієслово %d для цілого числа.

Завантаження редактора…
Показати підказку

`Printf` не додає новий рядок: ви повинні включити `\\n` у рядок формату.

Рішення доступне після 3 спроб

Quiz#go.m1.l5.e3
Готовий

Яке дієслово друкує динамічний TYPE значення?

Go
fmt.Printf("?\n", 3.14)
Варіанти відповідей

Підведення підсумків

  • Print/Println/Printf відрізняються пробілами та новими рядками.
  • %v — символ підстановки, який працює для будь-якого типу; %+v показує назви полів.
  • %T друкує тип (корисно для швидкого налагодження).
  • Sprintf створює рядки; Errorf створює помилки з обгортанням (%w).
  • Printf НЕ додає новий рядок: напишіть його самостійно у форматному рядку.