gob en binaire encoding
Encodeer Go-waarden
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 programmeertalengob- tussen Go-programma's, compact, eenvoudig met structsbinary- 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/NewDecodervoor binaire gegevens tussen Go-programma's- Compact, zelfbeschrijvend en alleen geëxporteerde velden
encoding/binaryvoor exacte byte-indelingen- JSON blijft de beste keuze voor verschillende programmeertalen en leesbaarheid
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
- Herhaling van encoding/json
- encoding/xml
- encoding/csv
- gob en binaire encoding