РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1181 of 1593 menu

Функция gob.NewEncoder

Функция gob.NewEncoder создает новый кодировщик, который записывает gob представление данных в указанный поток вывода. В качестве параметра функция принимает объект, реализующий интерфейс io.Writer. Возвращаемое значение - указатель на структуру gob.Encoder. Кодировщик используется для преобразования структур, карт, срезов и других типов данных в бинарный формат gob.

Синтаксис

gob.NewEncoder(w io.Writer) *gob.Encoder

Пример

Давайте создадим кодировщик для записи в буфер и закодируем простую строку:

package main import ( "bytes" "encoding/gob" "fmt" ) func main() { var buf bytes.Buffer enc := gob.NewEncoder(&buf) res := "example string" err := enc.Encode(res) if err != nil { fmt.Println("error:", err) return } fmt.Printf("% x", buf.Bytes()) }

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

"0f ff 81 03 01 02 ff 82 00 01 0c 01 0c 00 00 2d 65 78 61 6d 70 6c 65 20 73 74 72 69 6e 67"

Пример

Давайте закодируем структуру с полями разных типов:

package main import ( "bytes" "encoding/gob" "fmt" ) type Person struct { Name string Age int Email string } func main() { var buf bytes.Buffer enc := gob.NewEncoder(&buf) person := Person{ Name: "John Doe", Age: 30, Email: "john@example.com", } err := enc.Encode(person) if err != nil { fmt.Println("error:", err) return } fmt.Printf("encoded data length: %d bytes", buf.Len()) }

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

"encoded data length: 43 bytes"

Пример

Давайте закодируем срез целых чисел:

package main import ( "bytes" "encoding/gob" "fmt" ) func main() { var buf bytes.Buffer enc := gob.NewEncoder(&buf) numbers := []int{1, 2, 3, 4, 5} err := enc.Encode(numbers) if err != nil { fmt.Println("error:", err) return } fmt.Println("successfully encoded slice") }

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

"successfully encoded slice"

Пример

Давайте закодируем структуру с вложенным полем и указателем:

package main import ( "bytes" "encoding/gob" "fmt" ) type Address struct { City string Country string } type User struct { Username string Address *Address Active bool } func main() { var buf bytes.Buffer enc := gob.NewEncoder(&buf) user := User{ Username: "johndoe", Address: &Address{ City: "New York", Country: "USA", }, Active: true, } err := enc.Encode(user) if err != nil { fmt.Println("error:", err) return } fmt.Println("encoded data size:", buf.Len()) }

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

"encoded data size: 39"

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

  • функцию gob.NewDecoder,
    которая создает новый декодер для чтения gob данных
  • функцию gob.Encoder.Encode,
    которая выполняет кодирование данных в gob формат
  • функцию gob.Decoder.Decode,
    которая декодирует gob данные в указанную переменную
  • функцию gob.Register,
    которая регистрирует пользовательские типы для gob
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить