вторник, 19 мая 2020 г.

Неизменяемые строки в Golang

Почему этот код не компилируется?

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 байт.


Читайте также:


Комментариев нет:

Отправить комментарий