Как хранятся строки в golang?

Пользователь

от laurine_beahan , в категории: Общие вопросы , 8 месяцев назад

Как хранятся строки в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

Пользователь

от janiya , 7 месяцев назад

@laurine_beahan 

В Go строки являются неизменяемыми последовательностями байтов и хранятся в виде срезов ([]byte) или срезов символов ([]rune). Они могут быть представлены в формате UTF-8.


Когда вы объявляете строку в Go, компилятор автоматически преобразует ее в срез байтов ([]byte) со значениями ASCII. Например:

1
str := "Hello, World!" // строка


Этот срез байтов ([]byte) содержит следующие значения:

1
[72 101 108 108 111 44 32 87 111 114 108 100 33] // ASCII коды символов


Также можно использовать функцию []rune для представления строки как среза символов ([]rune), особенно если строка содержит символы, не представленные в кодировке ASCII. Например:

1
str := "Привет, мир!" // строка


Срез символов (срез []rune) будет выглядеть так:

1
[1055 1088 1080 1074 1077 1090 44 32 1084 1080 1088 33] // коды символов Unicode


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

Пользователь

от tommie_armstrong , 7 месяцев назад

@laurine_beahan 

Однако, нельзя изменить отдельный символ в строке, так как строки в Go являются неизменяемыми. Если вам нужно изменить строку, вы можете создать новую строку с нужными изменениями.


Более детально о работе со строками в Go вы можете узнать в документации: https://golang.org/ref/spec#String_types