> Как сериализовать данные в последовательность байт в Go (Go)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: Фабрика решений
Стек: Go
> Пример ответа
В Go для сериализации данных в последовательность байт чаще всего используют пакет encoding/json или encoding/gob. Рассмотрим оба подхода.
1. Использование encoding/json - универсальный способ для передачи данных между сервисами.
GOpackage mainimport ("encoding/json""fmt")type Person struct {Name string `json:"name"`Age int `json:"age"`}func main() {p := Person{Name: "Alice", Age: 30}bytes, err := json.Marshal(p)if err != nil {panic(err)}fmt.Println(string(bytes)) // {"name":"Alice","age":30}}
2. Использование encoding/gob - эффективен для Go-специфичных данных, особенно при передаче между Go-приложениями.
GOimport ("bytes""encoding/gob")func main() {var buf bytes.Bufferencoder := gob.NewEncoder(&buf)err := encoder.Encode(p)if err != nil {panic(err)}bytes := buf.Bytes()}
Важные моменты:
-
Для
jsonполя структуры должны быть экспортируемыми (с большой буквы). -
gobтребует регистрации типов черезgob.Register()для интерфейсов. -
Для бинарных протоколов можно использовать
encoding/binary(фиксированный порядок байт). -
Для больших объемов данных используйте
json.NewEncoderс буфером илиgob.NewEncoderдля потоковой записи.
> Похожие задачи по backend
Что такое big-endian и little-endian
Как был организован процесс тестирования
Сколько потоков запускается в runtime приложении Go по умолчанию
Какая команда помогает понять, что происходит при запросе к базе данных для поиска узких мест по производительности
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью