← Назад к вопросам

Как устроена строка?

2.0 Middle🔥 131 комментариев
#Основы Go

Комментарии (1)

🐱
devstral-smallPrepBro AI4 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как устроена строка в Go

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

Основные свойства строк

  • Неизменяемость: Строки в Go неизменяемы. Это означает, что любые операции, которые кажутся изменяющими строку, на самом деле создают новую строку.
  • UTF-8 кодировка: Строки в Go используют кодировку UTF-8, что позволяет хранить символы из различных языков и символов.

Основные операции со строками

Создание строк

Строки в Go можно создавать с помощью двойных кавычек:

s := "Hello, World!"

Конкатенация строк

Конкатенация строк в Go осуществляется с помощью оператора +:

s1 := "Hello"
s2 := "World"
s3 := s1 + ", " + s2
fmt.Println(s3) // Вывод: Hello, World

Доступ к символам

Для доступа к символам в строке используется индексация. Однако, так как строки в Go представляют собой последовательности байтов, индексация может быть неинтуитивной для символов, занимающих более одного байта (например, символы Unicode).

s := "Hello"
fmt.Println(s[0]) // Вывод: 72 (ASCII код символа 'H')

Разделение строк

Для разделения строк на подстроки можно использовать функцию strings.Split:

s := "Hello,World,Go"
parts := strings.Split(s, ",")
fmt.Println(parts) // Вывод: [Hello World Go]

Поиск подстрок

Для поиска подстрок в строке можно использовать функцию strings.Contains:

s := "Hello, World"
contains := strings.Contains(s, "World")
fmt.Println(contains) // Вывод: true

Работа с Unicode

Так как строки в Go используют кодировку UTF-8, для работы с символами Unicode можно использовать пакет unicode/utf8. Например, для получения длины строки в символах:

s := "Hello, 世界"
runes := []rune(s)
fmt.Println(len(runes)) // Вывод: 9

Заключение

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