Go Academy · Les

gob en binaire encoding

Encodeer Go-waarden

Les 4 van 413 stappen

gob en binaire encoding is een gratis Go Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Go Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Go Academy bevat in totaal 4 lessen.

Wat is gob

encoding/gob is een Go-specifiek binair formaat voor het serialiseren van Go-waarden. Het is compact en snel en daardoor ideaal voor communicatie tussen Go-programma's en opslag op schijf.

gob versus JSON

JSON is tekst, leesbaar voor mensen en geschikt voor verschillende programmeertalen. gob is binair en alleen voor Go, maar compacter en sneller te coderen. Gebruik gob wanneer beide kanten Go-programma's zijn.

Coderen naar een buffer

Een gob.Encoder schrijft naar elke io.Writer. Hier gebruiken we een bytes.Buffer om de binaire uitvoer op te slaan.

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())
}

Decoderen uit een buffer

Een gob.Decoder leest uit een io.Reader en vult een pointer, net als 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 coderen

gob verwerkt structs vanzelfsprekend. Alleen geëxporteerde velden worden gecodeerd.

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 en slices coderen

Samengestelde typen zoals maps en slices worden zonder extra werk gecodeerd en gedecodeerd.

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)
}

Zelfbeschrijvende gegevensstromen

gob-gegevensstromen bevatten type-informatie, zodat de decoder waarden opnieuw kan opbouwen, zelfs wanneer ze worden gekoppeld aan een iets andere maar compatibele struct. Extra of ontbrekende velden worden geaccepteerd.

Alleen geëxporteerde velden

Net als JSON codeert gob alleen geëxporteerde velden. Niet-geëxporteerde velden (met kleine letters) worden stilzwijgend overgeslagen.

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)
}

Andere binaire opties

Voor onbewerkte binaire gegevens met een vaste grootte schrijft encoding/binary gehele getallen en kommagetallen in big-endian- of little-endian-volgorde. Het werkt op een lager niveau dan gob en bevat geen typebeschrijvingen.

package main

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

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

Wanneer gebruik je elk formaat

Kies:

  • json - API's, configuratie, verschillende programmeertalen
  • gob - tussen Go-programma's, compact, eenvoudig met structs
  • binary - exacte byte-indelingen, protocollen

Niet leesbaar voor mensen

gob-uitvoer is binair; als je deze afdrukt, krijg je onleesbare tekens. Dat is de afweging voor compactheid. Gebruik gob voor machines, niet voor leesbare logregels.

Korte controle

Wanneer is gob een betere keuze dan JSON?

Samenvatting

gob en binaire codering:

  • gob.NewEncoder/NewDecoder voor binaire gegevens tussen Go-programma's
  • Compact, zelfbeschrijvend en alleen geëxporteerde velden
  • encoding/binary voor exacte byte-indelingen
  • JSON blijft de beste keuze voor verschillende programmeertalen en leesbaarheid
Gratis beginnen

Leer Go met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “gob en binaire encoding” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Go Academy, waaronder “gob en binaire encoding”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Go Academy bevat in totaal 4 lessen.

Wat leer ik in “gob en binaire encoding”?

Encodeer Go-waarden Je oefent met Go Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Go Academy te beginnen?

Ervaring vooraf is niet nodig. Go Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “gob en binaire encoding”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Go Academy?

Ja. Elke les over Go Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Herhaling van encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob en binaire encoding
← Terug naar Go Academy