> Как сериализовать данные в последовательность байт в Go (Go)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: Фабрика решений

Стек: Go

> Пример ответа

В Go для сериализации данных в последовательность байт чаще всего используют пакет encoding/json или encoding/gob. Рассмотрим оба подхода.

1. Использование encoding/json - универсальный способ для передачи данных между сервисами.

GO
package main
import (
"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-приложениями.

GO
import (
"bytes"
"encoding/gob"
)
func main() {
var buf bytes.Buffer
encoder := 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 для потоковой записи.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью