Ответ
В Go строки иммутабельны, поэтому для замены символов нужно преобразовывать строку в []rune или []byte. Основные способы:
- Через руны (поддерживает Unicode):
s := "привет"
runes := []rune(s)
runes[0] = 'П'
result := string(runes) // "Привет"
- Через strings.Replace (для замены подстрок):
s := "hello"
result := strings.Replace(s, "e", "a", -1) // "hallo"
- Через bytes.Buffer (для частых замен):
var buf bytes.Buffer
for _, r := range "hello" {
if r == 'l' {
buf.WriteRune('x')
} else {
buf.WriteRune(r)
}
}
result := buf.String() // "hexxo"
Для однобайтовых символов можно использовать []byte, но это не безопасно для Unicode.