Модульні уроки (5/5)
Введення/виведення з fmt
Пакет fmt стандартної бібліотеки є основним інструментом для друку на
консоль, рядки форматування та читання введених даних. Якщо ви використовували
printf в C ви почуватиметеся як удома, але з деякими додатковими вишуканостями
завдяки дієсловам %v та %T.
Print, Println, Printf: три функції, три поведінки
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 | ціле число за основою 10 | 42 |
%f | плавати | 3.140000 |
%.2f | float з 2 десятковими | 3.14 |
%s | рядок | Ada |
%q | рядок "у лапках" (з лапками та екранованими символами) | "Ada\n" |
%t | bool | true |
%x | шістнадцятковий (маленький) | 2a |
%b | двійковий | 101010 |
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: створення рядків без їх друку
Той самий інтерфейс, що й Printf, але результат повертається вам як
string:
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 ви можете загорнути існуючу помилку, щоб зберегти її
ланцюг (ми детально розглянемо це в модулі інтерфейсів):
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}Ваша черга
Надрукуйте рядок "ciao mondo" за допомогою fmt.Println.
Показати підказку
`fmt.Println` приймає рядок і додає сам новий рядок.
Рішення доступне після 3 спроб
Використовуйте fmt.Printf, щоб надрукувати 'eta=36' після нового рядка, використовуючи дієслово %d для цілого числа.
Показати підказку
`Printf` не додає новий рядок: ви повинні включити `\\n` у рядок формату.
Рішення доступне після 3 спроб
Яке дієслово друкує динамічний TYPE значення?
fmt.Printf("?\n", 3.14)Підведення підсумків
Print/Println/Printfвідрізняються пробілами та новими рядками.%v— символ підстановки, який працює для будь-якого типу;%+vпоказує назви полів.%Tдрукує тип (корисно для швидкого налагодження).Sprintfстворює рядки;Errorfстворює помилки з обгортанням (%w).PrintfНЕ додає новий рядок: напишіть його самостійно у форматному рядку.