0Pricing
Go Academy · Leçon

gob et encodage binaire

Encoder des valeurs Go

gob et encodage binaire est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Qu’est-ce que gob

encoding/gob est un format binaire propre à Go pour sérialiser des valeurs Go. Il est compact et rapide, ce qui le rend idéal pour les communications entre programmes Go et le stockage sur disque.

gob ou JSON

JSON est textuel, lisible par les utilisateurs et compatible entre langages. gob est binaire, réservé à Go, mais plus compact et plus rapide à encoder. Utilisez gob lorsque les deux extrémités sont des programmes Go.

Encoder dans un tampon

Un gob.Encoder écrit dans n’importe quel io.Writer. Ici, nous utilisons un bytes.Buffer pour contenir la sortie binaire.

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

Décoder depuis un tampon

Un gob.Decoder lit depuis un io.Reader et remplit un pointeur, comme 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)
}

Encoder des structures

gob gère naturellement les structures. Seuls les champs exportés sont encodés.

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

Encoder des tables associatives et des tranches

Les types composites comme les tables associatives et les tranches sont encodés et décodés de manière transparente.

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

Flux autodescriptifs

Les flux gob contiennent des informations de type, afin que le décodeur puisse reconstruire les valeurs, même en les associant à une structure légèrement différente, mais compatible. Les champs supplémentaires ou manquants sont acceptés.

Uniquement les champs exportés

Comme JSON, gob n’encode que les champs exportés. Les champs non exportés (en minuscules) sont ignorés silencieusement.

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

Autres options binaires

Pour les données binaires brutes de taille fixe, encoding/binary écrit les entiers et les nombres à virgule flottante en gros-boutiste ou petit-boutiste. Ce paquet est de plus bas niveau que gob et ne contient pas d’informations descriptives.

package main

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

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

Quand utiliser chaque format

Choisissez :

  • json - API, configuration, compatibilité entre langages
  • gob - communication entre programmes Go, compacité, simplicité avec les structures
  • binary - agencements exacts des octets, protocoles

Pas lisible par les utilisateurs

La sortie gob est binaire : son affichage produit du charabia. C’est le compromis à accepter pour obtenir une représentation compacte. Utilisez-la pour les machines, pas pour les journaux que vous lisez.

Vérification rapide

Quand gob est-il un meilleur choix que JSON ?

Récapitulatif

Encodage gob et binaire :

  • gob.NewEncoder / NewDecoder pour les échanges binaires entre programmes Go
  • Format compact et autodescriptif, limité aux champs exportés
  • encoding/binary pour les agencements exacts des octets
  • JSON reste le meilleur choix pour la compatibilité entre langages et la lisibilité

Questions Fréquemment Posées

La leçon « gob et encodage binaire » est-elle gratuite ?

Oui — le texte complet de « gob et encodage binaire » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « gob et encodage binaire » ?

Encoder des valeurs Go Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « gob et encodage binaire » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Récapitulatif de encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob et encodage binaire
← Retour à Go Academy