Строки являются одним из ключевых типов данных практически в любом языке программирования, включая Go. Этот язык предоставляет мощные инструменты для работы со строками, начиная от базовых операций и заканчивая продвинутыми возможностями обработки текста.

Типы строковых литералов

В Go строки представляют собой последовательность байтов, представляющих символы. Давайте рассмотрим два способа объявления и инициализации строк: обычные строковые литералы и сырые строковые литералы.

Обычные строковые литералы

Такие литералы заключаются в двойные кавычки и позволяют использовать специальные последовательности символов, такие как перенос строки (\n) или табуляцию (\t).
Здесь переменная message объявлена как обычный строковый литерал.

Сырой строковый литерал

Сырой строковый литерал заключается в обратные апострофы (`). Это полезно, когда вам нужно включить специальные символы или многострочные строки без использования специальных последовательностей.

Конкатенация и преобразование строк

Теперь давайте посмотрим, как объединять строки и конвертировать данные разных типов в строку.

Объединение строк

Объединение строк в Go осуществляется простым способом с использованием оператора +.

Преобразование данных в строки

Чтобы преобразовать другие типы данных в строки, можно воспользоваться функцией fmt.Sprintf() или прямым приведением типа.

Вычисление длины строки

Длина строки в Go вычисляется встроенной функцией len(), однако эта функция работает некорректно с символами, занимающими больше одного байта.
В данном примере функция len() возвращает неверную длину, поскольку подсчитывает количество байтов, тогда как utf8.RuneCountInString() правильно определяет количество символов (рунов) в строке. Подробно про руны мы говорили в этой статье.
Таким образом, понимание особенностей работы со строками позволяет разработчикам создавать эффективный и надежный код на Go.