Форматування Рядків
Тепер, коли ми ознайомилися з усіма базовими типами даних, можемо розглянути форматування рядків. У програмуванні форматування рядків означає включення значень змінних у рядки.
Примітка
Оператор
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)
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain more about how to use different format specifiers?
What happens if I use the wrong format specifier for a variable?
Can you show more examples of string formatting in Go?
Awesome!
Completion rate improved to 1.96
Форматування Рядків
Свайпніть щоб показати меню
Тепер, коли ми ознайомилися з усіма базовими типами даних, можемо розглянути форматування рядків. У програмуванні форматування рядків означає включення значень змінних у рядки.
Примітка
Оператор
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)
Дякуємо за ваш відгук!