Форматування Рядків
Свайпніть щоб показати меню
Тепер, коли ми ознайомилися з усіма базовими типами даних, можемо розглянути форматування рядків. У програмуванні форматування рядків означає включення значень змінних у рядки.
Примітка
Оператор
importвикористовується для імпорту пакетів у застосунок Go. Пакет — це набір пов’язаних вихідних файлів Go, які разом надають певний функціонал або сервіси. Пакетfmtмістить функції, що дозволяють форматувати рядки.
Однією з функцій пакету fmt, яку ми вже використовували, є функція Println. Функція Println виводить текст на екран, кожного разу починаючи з нового рядка. Однак існує функція Print, яка виводить текст без переходу на новий рядок:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
Загалом, ці функції можна використовувати для вставки значень змінних у рядкові дані за допомогою наступного методу:
index.go
123456789package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Println("There are", n, "cats,", in, "of them are inside the house while", out, "are outside.") }
Однак цей метод не є дуже ефективним, оскільки для вставки змінних у відповідні місця доводиться розділяти рядок на багато сегментів, що може стати громіздким у складніших випадках. Функція Printf вирішує цю проблему та спрощує процес виведення форматованих даних.
Функція Printf приймає рядок формату як перший аргумент, а далі — значення (або змінні), які потрібно вставити у рядок формату. Рядок формату містить заповнювачі (специфікатори формату), які визначають формат бажаного виводу.
Наведено приклад:
index.go
12345678910package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Printf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) }
Як показано у прикладі, специфікатори формату — це символи, які виконують роль заповнювачів для певних типів даних у рядку. Для кожного типу даних існує окремий специфікатор формату. У таблиці нижче наведено перелік основних специфікаторів формату:
| Форматний специфікатор | Тип даних |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (or Rune) |
Змінні підставляються у відповідні заповнювачі у форматному рядку. У виведенні наведеного вище прикладу перший %d замінюється на значення змінної n. Аналогічно, другий підставляється відповідною змінною, тобто in, а останній %d замінюється на значення out.
Можна також відформатувати рядок і зберегти його у змінній типу string за допомогою функції Sprintf, яка форматує рядок і повертає отриманий результат для зберігання або подальшого використання, замість негайного виведення на екран:
index.go
123456789101112package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in var text string = fmt.Sprintf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) fmt.Println("Text:", text) }
Ось більш складний приклад, який поєднує кілька концепцій, розглянутих раніше, в одній програмі. Це буде корисна вправа для перегляду наступної програми та її виводу з метою покращення навичок читання коду:
index.go
12345678910package main import "fmt" func main() { var numA float32 = 17.7 var numB int = 10 var str string = fmt.Sprintf("It is %t that 'a' is bigger than 'b'.", numA > float32(numB)) fmt.Printf("The numbers 'a' and 'b' are %f and %d. %s", numA, numB, str) }
У деяких випадках компілятор виконує неявне приведення типів для узгодження значень із специфікаторами формату, як показано в наступному прикладі:
index.go
1234567package main import "fmt" func main() { var char rune = 'A' fmt.Printf("The Unicode decimal value of %c is %d", char, char) }
Руна 'char' виводиться як символ і як числове значення. Однак у деяких випадках компілятор може видати помилку. Наприклад, наступний код призведе до некоректного виводу, оскільки 'float' не може бути неявно перетворений у 'int':
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат