🟢 Лёгкий · 1 очк. Строки и руны
Можно ли изменить отдельный символ в строке Go?
A Да, строки мутабельны
B Нет, нужно конвертировать в []byte или []rune
C Только через unsafe
D Да, через s[0] = 'a'
Объяснение вопроса

Нет. Строки в Go неизменяемы (immutable). Выражение s[0] = 'a' не скомпилируется. Для изменения нужно создать новую строку: сконвертировать в []byte (для байтовых операций) или в []rune (для символов Unicode), изменить срез и сконвертировать обратно в string.

s := "hello"
// s[0] = 'H'  // ошибка компиляции
b := []byte(s)
b[0] = 'H'
s = string(b)  // "Hello"

// Для Unicode-символов:
rs := []rune("Привет")
rs[0] = 'П'
s = string(rs)

Иммутабельность позволяет безопасно передавать строки между горутинами и использовать их как ключи map без копирования.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.