Метод gob.Encoder.Encode

Метод gob.Encoder.Encode выполняет сериализацию переданного значения в бинарный формат Gob и записывает результат в поток вывода, связанный с кодировщиком. В качестве параметра метод принимает произвольное значение interface{}, которое требуется закодировать. Метод возвращает error, который будет nil при успешном выполнении операции. Если переданное значение содержит типы, не зарегистрированные в системе Gob, метод вернет ошибку.

Синтаксис

goerr := enc.Encode(data)

Пример

Давайте закодируем простое значение int в формате Gob и выведем полученные байты:

gopackage main

import (
  "bytes"
  "encoding/gob"
  "fmt"
)

func main() {
  var buf bytes.Buffer
  enc := gob.NewEncoder(&buf)

  data := 12345
  err := enc.Encode(data)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Println(buf.Bytes())
}

Результат выполнения кода:

go[35 255 129 3 1 1 3 105 110 116 1 255 130 0 1 4 0 0 0 8 255 130 0 57 48]

Пример

Давайте закодируем структуру в формате Gob. Для успешной сериализации все поля структуры должны быть экспортируемыми (начинаться с заглавной буквы):

gopackage main

import (
  "bytes"
  "encoding/gob"
  "fmt"
)

type User struct {
  ID   int
  Name string
  Age  int
}

func main() {
  var buf bytes.Buffer
  enc := gob.NewEncoder(&buf)

  user := User{ID: 1, Name: "Alice", Age: 25}
  err := enc.Encode(user)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Println(buf.Bytes())
}

Результат выполнения кода:

go[44 255 131 3 1 1 4 85 115 101 114 1 255 132 0 1 2 1 2 73 68 1 4 0 1 4 78 97 109 101 1 12 0 1 3 65 103 101 1 4 0 0 0 22 255 132 0 1 1 5 65 108 105 99 101 19]

Пример

Давайте закодируем слайс строк в формате Gob:

gopackage main

import (
  "bytes"
  "encoding/gob"
  "fmt"
)

func main() {
  var buf bytes.Buffer
  enc := gob.NewEncoder(&buf)

  data := []string{"a", "b", "c", "d", "e"}
  err := enc.Encode(data)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Println(buf.Bytes())
}

Результат выполнения кода:

go[45 255 131 3 1 1 5 115 108 105 99 101 1 255 132 0 1 4 0 1 5 115 116 114 105 110 103 1 12 0 0 0 16 255 132 0 5 1 1 97 1 1 98 1 1 99 1 1 100 1 1 101 0 0]

Смотрите также

  • функцию gob.NewEncoder,
    которая создает новый кодировщик Gob для записи в указанный поток
  • функцию gob.NewDecoder,
    которая создает новый декодер Gob для чтения из указанного потока
  • функцию gob.Decoder.Decode,
    которая выполняет декодирование данных из формата Gob
  • функцию json.Marshal,
    которая выполняет сериализацию данных в формат JSON