Comments 6
В закладки, спасибо!
А []byte(string) и наоборот ничего не копируют?
копирование произойдет в любом случае. давай по порядку:
строки нельзя изменить. что кроется под этим выражением? да, мы можем конвертировать ее, да, мы можем при помощи конверсии в []rune удалить отдельные символы. тем не менее исходная строка, над которой мы совершаем эти операции останется такой же, какой и была. измененная же строка будет ссылаться на новый массив.
процесс:
есть строка str (длина 7), мы хотим удалить из нее второй символ
конвертируем в []rune, str остается такой же какой и была, а только что созданный слайс рун это копия строки.
проходимся по []rune и убираем убираем символ под индексом 1.
конвертируем []rune обратно в строку, получаем новую строку, которая является копией []rune.
только в некоторых случаях есть такая оптимизация
UPD - планировалось как ответ на вопрос выше...
Большой разбор Строк Go → «Типы и структуры данных Go»