Какие знаешь способы замены символа в строке

«Какие знаешь способы замены символа в строке» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go строки иммутабельны, поэтому для замены символов нужно преобразовывать строку в []rune или []byte. Основные способы:

  1. Через руны (поддерживает Unicode):
s := "привет"
runes := []rune(s)
runes[0] = 'П'
result := string(runes) // "Привет"
  1. Через strings.Replace (для замены подстрок):
s := "hello"
result := strings.Replace(s, "e", "a", -1) // "hallo"
  1. Через 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.