Когда вы конвертируете между строкой и срезом (массивом) байтов, вы получаете совершенно новый срез, который содержит те же байты, что и строка, и наоборот.
- Преобразование не меняет данные;
- единственное отличие состоит в том, что строки являются неизменяемыми, а срезы байтов могут быть изменены.
Если вам нужно манипулировать символами (рунами) строки, вы можете вместо этого преобразовать строку в срез рун.
Конвертировать строку в байты
Когда вы преобразуете строку в срез байтов, вы получаете новый срез, который содержит те же байты, что и строка.
b := []byte("ABC€")
fmt.Println(b) // [65 66 67 226 130 172]
Обратите внимание, что символ € кодируется в UTF-8 с использованием 3 байтов.
Конвертировать байты в строку
Когда вы конвертируете срез байтов в строку, вы получаете новую строку, которая содержит те же байты, что и срез.
s := string([]byte{65, 66, 67, 226, 130, 172})
fmt.Println(s) // ABC€
Производительность
Эти преобразования создают новый срез или строку и, следовательно, имеют временную сложность, пропорциональную количеству обрабатываемых байтов.
Более эффективная альтернатива в некоторых случаях - использовать построитель строк (strings.Builder), который может объединять строки без избыточного копирования.
Читайте также:
- Обзор обработки строк в Golang
- Три способа разделить строку на срез в Golang
- Эффективная конкатенация строк в Golang
Комментариев нет:
Отправить комментарий