Метод gob.Encoder.Encode
Метод gob.Encoder.Encode выполняет сериализацию переданного значения в бинарный формат Gob
и записывает результат в поток вывода, связанный с кодировщиком. В качестве параметра метод
принимает произвольное значение interface{}, которое требуется закодировать.
Метод возвращает error, который будет nil при успешном выполнении операции.
Если переданное значение содержит типы, не зарегистрированные в системе Gob, метод вернет ошибку.
Синтаксис
err := enc.Encode(data)
Пример
Давайте закодируем простое значение int в формате Gob и выведем полученные байты:
package 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())
}
Результат выполнения кода:
[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. Для успешной сериализации все поля структуры должны быть экспортируемыми (начинаться с заглавной буквы):
package 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())
}
Результат выполнения кода:
[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:
package 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())
}
Результат выполнения кода:
[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