Sobes.tech
Назад к вопросам
Senior
5

Что такое строка в Go? Какая у нее структура и особенности?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

В Go строка (string) — это неизменяемая последовательность байтов, обычно представляющая текст в кодировке UTF-8. Структурно строка реализована как структура с двумя полями: указатель на массив байтов и длина.

Особенности строк в Go:

  • Неизменяемость: после создания строку нельзя изменить. Любые операции, изменяющие содержимое, создают новую строку.
  • UTF-8: строки хранят байты в UTF-8, что позволяет работать с Unicode символами.
  • Доступ по байтам: индексирование строки возвращает байт, а не символ (руну). Для работы с символами нужно использовать пакет unicode/utf8 или преобразовывать строку в срез рун.

Пример структуры строки (упрощённо):

// string в Go примерно так:
type stringStruct struct {
    ptr *byte
    len int
}

Пример работы со строкой:

s := "Привет"
fmt.Println(len(s)) // количество байт
runes := []rune(s)
fmt.Println(len(runes)) // количество символов (рун)