HTML Diff
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>Строки можно сравнивать операторами ==, !=, &lt;, &lt;=, &gt;, &gt;=. Сравнение происходит лексикографически по байтам 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