string (рядок тексту) у Go - це незмінна послідовність байтів, які не обовʼязково є символами.
Рядковий літерал записують між подвійними лапками:
const name = "Jane"
Рядки тексту можна зʼєднувати за допомогою оператора +:
"Jane" + " " + "Austen"
// => "Jane Austen"
Деякі спеціальні символи потрібно екранувати за допомогою зворотної скісної риски, наприклад \t для табуляції та \n для нового рядка в рядках тексту.
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
Пакет strings містить багато корисних функцій для роботи з рядками тексту.
Докладніше про функції для роботи з рядками тексту читайте в документації пакета strings.
Ось кілька прикладів:
import "strings"
// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"
// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"
Як уже зазначалося, деякі спеціальні символи потрібно екранувати за допомогою зворотної скісної риски. Нижче наведено докладніший список цих спеціальних символів:
| Значення | Опис |
|---|---|
\a |
Сигнал або дзвінок |
\b |
Крок назад |
\\ |
Зворотна скісна риска |
\t |
Горизонтальна табуляція |
\n |
Переведення рядка |
\f |
Переведення сторінки |
\r |
Повернення каретки |
\v |
Вертикальна табуляція |
\' |
Одинарна лапка |
\" |
Подвійна лапка |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
Сирі рядкові літерали використовують як роздільник зворотні лапки (`) замість подвійних лапок, і всі символи в них інтерпретуються буквально: немає потреби екранувати символи чи переведення рядків.
Ось приклад багаторядкового рядка тексту:
const daltons = `Joe
William
Jack
Averell`
Цей рядок тексту займає кілька рядків.
Точніше, у ньому є 3 \n.
Однак, оскільки це сирий рядковий літерал, нам не потрібно явно вставляти \n у рядок тексту.
Переведення рядків будуть інтерпретуватися буквально.
Ось ще кілька прикладів, які порівнюють сирі рядкові літерали зі звичайними рядковими літералами:
`abc`
// same as "abc"
"\"" // regular string literal with 1 character: a double quote
// same as `"` a raw string literal with 1 character: a double quote
`\n
` // raw string literal with 3 character: a backslash, an 'n', and a newline
// same as "\\n\n" a regular string literal with 3 characters: a backslash, an 'n', and a newline
"\t\n" // regular string literal with 2 characters: a tab and a newline
`\t\n`// raw string literal with 4 characters: two backslashes, a 't', and an 'n'