Функция gob.NewDecoder
Функция gob.NewDecoder создает новый декодер,
который читает данные в формате gob из переданного
потока ввода. В качестве параметра она принимает
интерфейс io.Reader, из которого будут
читаться закодированные данные. Возвращает она
указатель на структуру Decoder.
Синтаксис
gob.NewDecoder(r io.Reader) *Decoder
Пример
Давайте создадим декодер для чтения данных из буфера:
package main
import (
"bytes"
"encoding/gob"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
var buf bytes.Buffer
// Кодируем данные в буфер
enc := gob.NewEncoder(&buf)
person := Person{Name: "Alice", Age: 30}
enc.Encode(person)
// Создаем декодер для чтения из буфера
dec := gob.NewDecoder(&buf)
// Декодируем данные
var res Person
dec.Decode(&res)
fmt.Printf("%+v", res)
}
Результат выполнения кода:
{Name:Alice Age:30}
Пример
Давайте прочитаем несколько закодированных значений из одного потока:
package main
import (
"bytes"
"encoding/gob"
"fmt"
)
func main() {
var buf bytes.Buffer
// Кодируем несколько значений
enc := gob.NewEncoder(&buf)
enc.Encode("first")
enc.Encode("second")
enc.Encode("third")
// Создаем декодер
dec := gob.NewDecoder(&buf)
// Декодируем каждое значение
var res string
dec.Decode(&res)
fmt.Printf("%q", res)
dec.Decode(&res)
fmt.Printf("%q", res)
dec.Decode(&res)
fmt.Printf("%q", res)
}
Результат выполнения кода:
"first""second""third"
Пример
Давайте прочитаем данные из файла с помощью декодера:
package main
import (
"encoding/gob"
"fmt"
"os"
)
type Data struct {
ID int
Value string
}
func main() {
// Открываем файл для чтения
file, _ := os.Open("data.gob")
defer file.Close()
// Создаем декодер
dec := gob.NewDecoder(file)
// Декодируем данные
var res Data
dec.Decode(&res)
fmt.Printf("%+v", res)
}
Результат выполнения кода:
{ID:1 Value:example}
Смотрите также
-
функцию
gob.NewEncoder,
которая создает кодировщик для записи данных в формате gob -
функцию
gob.Decoder.Decode,
которая выполняет декодирование данных из потока -
функцию
gob.Register,
которая регистрирует пользовательские типы для кодирования -
функцию
json.NewDecoder,
которая создает декодер для чтения данных в формате JSON