gob y codificación binaria
Codifique valores de Go
gob y codificación binaria es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
Qué es gob
encoding/gob es un formato binario específico de Go para serializar valores de Go. Es compacto y rápido, ideal para la comunicación entre programas Go y para el almacenamiento en disco.
gob frente a JSON
JSON es texto, legible para las personas y compatible entre lenguajes. gob es binario, solo funciona con Go, pero es más compacto y rápido de codificar. Use gob cuando ambos extremos sean programas Go.
Codificar en un búfer
Un gob.Encoder escribe en cualquier io.Writer. Aquí usamos un bytes.Buffer para almacenar la salida binaria.
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())
}Decodificar desde un búfer
Un gob.Decoder lee de un io.Reader y rellena un puntero, igual que 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)
}Codificar estructuras
gob gestiona las estructuras de forma natural. Solo se codifican los campos exportados.
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)
}Codificar mapas y slices
Los tipos compuestos, como mapas y slices, se codifican y decodifican 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)
}Flujos autodescriptivos
Los flujos gob incluyen información de tipos, por lo que el decodificador puede reconstruir valores incluso al asignarlos a una estructura ligeramente diferente pero compatible. Se toleran los campos adicionales o ausentes.
Solo campos exportados
Al igual que JSON, gob solo codifica los campos exportados. Los campos no exportados (en minúsculas) se omiten 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)
}Otras opciones binarias
Para datos binarios sin formato y de tamaño fijo, encoding/binary escribe enteros y números de coma flotante en formato big endian o little endian. Es de más bajo nivel que gob y no es autodescriptivo.
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
var buf bytes.Buffer
binary.Write(&buf, binary.BigEndian, uint32(258))
fmt.Println(buf.Bytes())
}Cuándo usar cada opción
Elija:
json- API, configuración y compatibilidad entre lenguajesgob- comunicación entre programas Go, compacidad y facilidad con estructurasbinary- diseños exactos de bytes y protocolos
No legible para las personas
La salida de gob es binaria; al imprimirla se muestran caracteres ilegibles. Ese es el coste de la compacidad. Úsela para máquinas, no para registros que deban leer las personas.
Comprobación rápida
¿Cuándo es mejor elegir gob en lugar de JSON?
Repaso
Codificación gob y binaria:
gob.NewEncoder/NewDecoderpara comunicación binaria entre programas Go- Compacta, autodescriptiva y limitada a campos exportados
encoding/binarypara diseños exactos de bytes- JSON sigue siendo la mejor opción para la compatibilidad entre lenguajes y la legibilidad
Preguntas frecuentes
¿La lección «gob y codificación binaria» es gratis?
Sí — el texto completo de «gob y codificación binaria» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «gob y codificación binaria»?
Codifique valores de Go Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «gob y codificación binaria»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Repaso de encoding/json
- encoding/xml
- encoding/csv
- gob y codificación binaria