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 Verwendunggob– Kommunikation zwischen Go-Programmen, kompakt und einfach mit Structsbinary– 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/NewDecoderfür binäre Kommunikation zwischen Go-Programmen- Kompakt, selbstbeschreibend und nur für exportierte Felder
encoding/binaryfü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
- encoding/json – Wiederholung
- encoding/xml
- encoding/csv
- gob und binäre Kodierung