Почему этот код не компилируется?
s := "hello"
s[0] = 'H'
fmt.Println(s)
../main.go:3:7: cannot assign to s[0]
Ответ
Строки Go являются неизменяемыми и ведут себя как байтовые срезы только для чтения (с несколькими дополнительными свойствами).
Чтобы обновить данные, используйте взамен срез рун.
buf := []rune("hello")
buf[0] = 'H'
s := string(buf)
fmt.Println(s) // "Hello"
Если строка содержит только символы ASCII, вы также можете использовать байтовый срез, поскольку каждый ASCII символ занимает только 1 байт.
Читайте также:
- Руны и кодировка символов в Golang
- Строка, байт, руна, символ в Golang
- Массивы, срезы и строки: механика работы append в Golang
Комментариев нет:
Отправить комментарий