2 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В Go строки представлены типом string. Это неизменяемая последовательность байт, закодированных в UTF-8. Строки - один из самых часто используемых типов данных, особенно при работе с текстами, запросами, HTTP и файловыми путями.</p>
1
<p>В Go строки представлены типом string. Это неизменяемая последовательность байт, закодированных в UTF-8. Строки - один из самых часто используемых типов данных, особенно при работе с текстами, запросами, HTTP и файловыми путями.</p>
2
<p>Строки можно объявлять двумя способами</p>
2
<p>Строки можно объявлять двумя способами</p>
3
<p>Обычные строки записываются в двойных кавычках. Но если строка многострочная или содержит спецсимволы (например, \n или кавычки), её удобнее оформлять в сырых литералах - через обратные кавычки:</p>
3
<p>Обычные строки записываются в двойных кавычках. Но если строка многострочная или содержит спецсимволы (например, \n или кавычки), её удобнее оформлять в сырых литералах - через обратные кавычки:</p>
4
<p>В таких строках сохраняются все отступы, переносы и символы как есть, без экранирования.</p>
4
<p>В таких строках сохраняются все отступы, переносы и символы как есть, без экранирования.</p>
5
<h2>Конкатенация</h2>
5
<h2>Конкатенация</h2>
6
<p>Объединить строки можно с помощью оператора +:</p>
6
<p>Объединить строки можно с помощью оператора +:</p>
7
<p>Go поддерживает сокращенный синтаксис конкатенации строк если используются переменные:</p>
7
<p>Go поддерживает сокращенный синтаксис конкатенации строк если используются переменные:</p>
8
<p>Конкатенация возможна только между значениями типа string. Смешивание типов приведёт к ошибке компиляции:</p>
8
<p>Конкатенация возможна только между значениями типа string. Смешивание типов приведёт к ошибке компиляции:</p>
9
+
<h2>Сравнение строк</h2>
10
+
<p>Строки можно сравнивать операторами ==, !=, <, <=, >, >=. Сравнение происходит лексикографически по байтам UTF-8: строка сравнивается с другой слева направо до первого отличия. Длина влияет только в случае, когда одна строка является префиксом другой.</p>
9
<h2>Преобразование чисел в строки</h2>
11
<h2>Преобразование чисел в строки</h2>
10
<p>В Go числа не конвертируются в строки автоматически. Более того, выражение string(number) не преобразует число в его текстовое представление. Вместо этого число рассматривается как код Unicode, и результатом будет символ с этим кодом.</p>
12
<p>В Go числа не конвертируются в строки автоматически. Более того, выражение string(number) не преобразует число в его текстовое представление. Вместо этого число рассматривается как код Unicode, и результатом будет символ с этим кодом.</p>
11
<p>Например:</p>
13
<p>Например:</p>
12
<p>Чтобы получить строку с текстовым значением числа, нужно использовать пакет strconv:</p>
14
<p>Чтобы получить строку с текстовым значением числа, нужно использовать пакет strconv:</p>
13
<p>Для чисел с плавающей точкой применяется strconv.FormatFloat, например:</p>
15
<p>Для чисел с плавающей точкой применяется strconv.FormatFloat, например:</p>
14
<h2>Форматирование строк</h2>
16
<h2>Форматирование строк</h2>
15
<p>Go не поддерживает интерполяцию строк напрямую. Вместо этого используется функция fmt.Sprintf(), которая работает по шаблону:</p>
17
<p>Go не поддерживает интерполяцию строк напрямую. Вместо этого используется функция fmt.Sprintf(), которая работает по шаблону:</p>
16
<h2>Длина строки</h2>
18
<h2>Длина строки</h2>
17
<p>Для определения длины строки используется встроенная функция len():</p>
19
<p>Для определения длины строки используется встроенная функция len():</p>
18
<p>Строки в Go - это последовательности байт, а не символов. Это важно, потому что один символ в UTF-8 (например, кириллический или emoji) может занимать 2, 3 или 4 байта. Например:</p>
20
<p>Строки в Go - это последовательности байт, а не символов. Это важно, потому что один символ в UTF-8 (например, кириллический или emoji) может занимать 2, 3 или 4 байта. Например:</p>
19
<p>Чтобы корректно работать с символами, а не байтами, в Go есть специальный тип - rune. rune - это псевдоним для int32, который обозначает один юникод-символ. Поэтому если мы хотим посчитать количество символов, а не байт, то нам придется воспользоваться функцией utf8.RuneCountInString().</p>
21
<p>Чтобы корректно работать с символами, а не байтами, в Go есть специальный тип - rune. rune - это псевдоним для int32, который обозначает один юникод-символ. Поэтому если мы хотим посчитать количество символов, а не байт, то нам придется воспользоваться функцией utf8.RuneCountInString().</p>
20
<h2>Обращение к символам</h2>
22
<h2>Обращение к символам</h2>
21
<p>Строка в Go - это массив байт. Поэтому при обращении по индексу (s[i]) возвращается<strong>байт</strong>, а не символ:</p>
23
<p>Строка в Go - это массив байт. Поэтому при обращении по индексу (s[i]) возвращается<strong>байт</strong>, а не символ:</p>
22
<p>Чтобы получить символ, нужно преобразовать строку в срез (динамический массив) рун. Массивы и срез проходятся чуть дальше, но код имеет смысл посмотреть уже сейчас.</p>
24
<p>Чтобы получить символ, нужно преобразовать строку в срез (динамический массив) рун. Массивы и срез проходятся чуть дальше, но код имеет смысл посмотреть уже сейчас.</p>
23
25