gob e codificação binária
Codifique valores de Go
gob e codificação binária é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
O que é gob
encoding/gob é um formato binário específico do Go para serializar valores Go. Ele é compacto e rápido, ideal para comunicação entre programas Go e para armazenamento em disco.
gob versus JSON
JSON é textual, legível por humanos e compatível entre linguagens. gob é binário, exclusivo do Go, mas mais compacto e rápido para codificar. Use gob quando os dois lados forem programas Go.
Codificando em um buffer
Um gob.Encoder grava em qualquer io.Writer. Aqui usamos um bytes.Buffer para armazenar a saída binária.
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())
}Decodificando de um buffer
Um gob.Decoder lê de um io.Reader e preenche um ponteiro, assim como 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)
}Codificando estruturas
gob lida naturalmente com estruturas. Somente campos exportados são codificados.
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)
}Codificando mapas e fatias
Tipos compostos, como mapas e fatias, são codificados e decodificados de forma 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)
}Fluxos autodescritivos
Os fluxos gob incluem informações de tipo, portanto o decodificador pode reconstruir os valores mesmo ao mapeá-los para uma estrutura ligeiramente diferente, mas compatível. Campos extras ou ausentes são aceitos.
Somente campos exportados
Assim como JSON, gob codifica apenas campos exportados. Campos não exportados (em letras minúsculas) são ignorados silenciosamente.
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)
}Outras opções binárias
Para dados binários brutos de tamanho fixo, encoding/binary grava inteiros e números de ponto flutuante em ordem de bytes do mais significativo para o menos significativo ou vice-versa. Ele é de nível mais baixo que gob e não é autodescritivo.
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
var buf bytes.Buffer
binary.Write(&buf, binary.BigEndian, uint32(258))
fmt.Println(buf.Bytes())
}Quando usar cada opção
Escolha:
json- APIs, configuração e compatibilidade entre linguagensgob- comunicação entre programas Go, formato compacto e facilidade com estruturasbinary- organização exata dos bytes e protocolos
Não legível por humanos
A saída gob é binária; imprimi-la mostra caracteres sem sentido. Essa é a compensação pela compactação. Use-a para máquinas, não para registros que você lê.
Verificação rápida
Quando gob é uma escolha melhor que JSON?
Recapitulação
Codificação gob e binária:
gob.NewEncoder/NewDecoderpara comunicação binária entre programas Go- Formato compacto e autodescritivo, com apenas campos exportados
encoding/binarypara organizações exatas de bytes- JSON continua sendo a melhor opção para compatibilidade entre linguagens e legibilidade
Perguntas Frequentes
A aula “gob e codificação binária” é grátis?
Sim — o texto completo de “gob e codificação binária” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “gob e codificação binária”?
Codifique valores de Go Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “gob e codificação binária”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Revisão de encoding/json
- encoding/xml
- encoding/csv
- gob e codificação binária