0Pricing
Go Academy · Lektion

gob und binäre Kodierung

Go-Werte kodieren

gob und binäre Kodierung ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist gob

encoding/gob ist ein Go-spezifisches Binärformat zur Serialisierung von Go-Werten. Es ist kompakt und schnell und eignet sich ideal für die Kommunikation zwischen Go-Programmen sowie für die Speicherung auf Datenträgern.

gob im Vergleich zu JSON

JSON ist textbasiert, für Menschen lesbar und sprachübergreifend einsetzbar. gob ist binär und nur für Go geeignet, lässt sich aber kompakter und schneller codieren. Verwenden Sie gob, wenn beide Seiten Go-Programme sind.

In einen Puffer codieren

Ein gob.Encoder schreibt in einen beliebigen io.Writer. Hier verwenden wir einen bytes.Buffer, um die binäre Ausgabe aufzunehmen.

package main

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

func main() {
	var buf bytes.Buffer
	enc := gob.NewEncoder(&buf)
	enc.Encode(42)
	fmt.Println("bytes written:", buf.Len())
}

Aus einem Puffer decodieren

Ein gob.Decoder liest aus einem io.Reader und befüllt einen Pointer, genau wie Unmarshal.

package main

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

func main() {
	var buf bytes.Buffer
	gob.NewEncoder(&buf).Encode(42)
	var n int
	gob.NewDecoder(&buf).Decode(&n)
	fmt.Println(n)
}

Structs codieren

gob verarbeitet Structs direkt. Nur exportierte Felder werden codiert.

package main

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

type User struct {
	Name string
	Age  int
}

func main() {
	var buf bytes.Buffer
	gob.NewEncoder(&buf).Encode(User{"Ann", 30})
	var u User
	gob.NewDecoder(&buf).Decode(&u)
	fmt.Println(u)
}

Maps und Slices codieren

Zusammengesetzte Typen wie Maps und Slices lassen sich transparent codieren und decodieren.

package main

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

func main() {
	var buf bytes.Buffer
	gob.NewEncoder(&buf).Encode([]int{1, 2, 3})
	var s []int
	gob.NewDecoder(&buf).Decode(&s)
	fmt.Println(s)
}

Selbstbeschreibende Datenströme

gob-Datenströme enthalten Typinformationen, sodass der Decoder Werte auch in ein leicht abweichendes, aber kompatibles Struct wiederherstellen kann. Zusätzliche oder fehlende Felder werden toleriert.

Nur exportierte Felder

Wie JSON codiert gob nur exportierte Felder. Nicht exportierte (kleingeschriebene) Felder werden stillschweigend übersprungen.

package main

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

type T struct {
	Public  int
	private int
}

func main() {
	var buf bytes.Buffer
	gob.NewEncoder(&buf).Encode(T{Public: 1, private: 2})
	var out T
	gob.NewDecoder(&buf).Decode(&out)
	fmt.Println(out.Public, out.private)
}

Weitere Binäroptionen

Für unveränderte Binärdaten fester Größe schreibt encoding/binary Ganzzahlen und Gleitkommazahlen in Big- oder Little-Endian-Reihenfolge. Es arbeitet auf einer niedrigeren Ebene als gob und ist nicht selbstbeschreibend.

package main

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

func main() {
	var buf bytes.Buffer
	binary.Write(&buf, binary.BigEndian, uint32(258))
	fmt.Println(buf.Bytes())
}

Wann welche Option verwenden

Wählen Sie:

  • json – APIs, Konfiguration und sprachübergreifende Verwendung
  • gob – Kommunikation zwischen Go-Programmen, kompakt und einfach mit Structs
  • binary – exakte Byte-Anordnungen und Protokolle

Nicht für Menschen lesbar

Die gob-Ausgabe ist binär; beim Ausgeben erscheint sie als unverständliche Zeichenfolge. Das ist der Preis für die Kompaktheit. Verwenden Sie sie für Maschinen, nicht für Protokolle, die Sie lesen möchten.

Kurzer Check

Wann ist gob die bessere Wahl gegenüber JSON?

Zusammenfassung

gob- und Binärcodierung:

  • gob.NewEncoder/NewDecoder für binäre Kommunikation zwischen Go-Programmen
  • Kompakt, selbstbeschreibend und nur für exportierte Felder
  • encoding/binary für exakte Byte-Anordnungen
  • JSON bleibt die beste Wahl für sprachübergreifende Verwendung und Lesbarkeit

Häufig gestellte Fragen

Ist die Lektion „gob und binäre Kodierung“ kostenlos?

Ja — der vollständige Text von „gob und binäre Kodierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „gob und binäre Kodierung“?

Go-Werte kodieren Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „gob und binäre Kodierung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. encoding/json – Wiederholung
  2. encoding/xml
  3. encoding/csv
  4. gob und binäre Kodierung
← Zurück zu Go Academy