🟢 Лёгкий · 1 очк. Разное / продвинутое
Как преобразовать []byte в string?
A str(b)
B string(b)
C b.String()
D fmt.Sprint(b)
Объяснение вопроса

Преобразование выполняется явным приведением типа: string(b) для []byte в строку и []byte(s) для строки в байты.

Важно про копирование

Строки в Go неизменяемы. При string(bytes) создаётся копия данных - исходный слайс и строка не разделяют память. Это O(n) по времени и памяти.

b := []byte{72, 101, 108, 108, 111}
s := string(b)   // "Hello"
b[0] = 104       // меняем b
fmt.Println(s)   // по-прежнему "Hello"

Когда нужна осторожность

Большие буферы: повторное преобразование string(buf) каждый раз копирует данные. Для чтения из io.Reader часто используют strings.Builder или накопление в []byte с одним финальным string(buf).

  • string([]byte) - копия, безопасно сохранять результат
  • []byte(string) - тоже копия
  • unsafe для zero-copy - только при глубоком понимании рисков
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.