Protocol Buffers y archivos .proto
Tipos de mensajes, servicios y generación de código con protoc
Protocol Buffers y archivos .proto es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 1 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é son los Protocol Buffers?
Protocol Buffers (protobuf) es un formato de serialización binaria independiente del lenguaje, desarrollado por Google. Es más pequeño y rápido que JSON, y constituye el formato de transmisión canónico de gRPC.
Sintaxis de archivos .proto
Defina mensajes y servicios en un archivo .proto:
syntax = "proto3";
package user;
option go_package = "github.com/example/user/pb";
message User {
int64 id = 1;
string name = 2;
string email = 3;
}
service UserService {
rpc GetUser (GetUserRequest) returns (User);
}
message GetUserRequest { int64 id = 1; }Números de campo
Cada campo tiene un número único (etiqueta) que se utiliza en la codificación binaria. Nunca cambie los números de campos existentes una vez que el esquema esté en uso, ya que rompería la compatibilidad.
Valores predeterminados de proto3
En proto3, todos los campos tienen valores predeterminados (0 para los números, "" para las cadenas y false para los booleanos). No existe una distinción entre required y optional: los campos ausentes reciben el valor predeterminado.
Instalación de protoc
Instale el compilador de protobuf y el complemento de Go:
brew install protobuf
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latestGeneración de código Go
Ejecute protoc para generar estructuras de Go y stubs de gRPC:
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
user/user.protoTipos generados
protoc genera una estructura de Go por cada mensaje, métodos getter, una interfaz de servicio, una estructura de servidor no implementada y una estructura de cliente con todos los métodos RPC.
Campos repetidos
Utilice repeated para representar una lista, que se convierte en un slice de Go:
message ListUsersResponse {
repeated User users = 1;
}Enumeraciones
Defina enumeraciones en proto3. El primer valor debe ser 0, que es el valor predeterminado:
enum Role {
ROLE_UNSPECIFIED = 0;
ROLE_USER = 1;
ROLE_ADMIN = 2;
}Tipos conocidos
El paquete google/protobuf proporciona tipos comunes: Timestamp, Duration, Struct (similar a JSON) y Any. Impórtelos en su archivo .proto.
import "google/protobuf/timestamp.proto";
message Event { google.protobuf.Timestamp created_at = 1; }Reglas de compatibilidad con versiones anteriores
Cambios seguros: añadir campos nuevos, añadir tipos de mensaje nuevos y añadir valores de enumeración nuevos. Cambios no seguros: cambiar números de campo, cambiar tipos de campo y eliminar campos, ya que pasan silenciosamente a tener el valor predeterminado.
Comprobación rápida
¿Qué debe cumplirse con respecto a los números de campo en un mensaje protobuf?
Recapitulación: Protocol Buffers
Puntos clave:
- .proto define mensajes (campos + tipos) y servicios (RPC)
- Los números de campo son permanentes: nunca los reutilice ni los cambie
- protoc + go plugin genera estructuras de Go y stubs de gRPC
- Los campos repeated → slices; los enums deben comenzar en 0
Preguntas frecuentes
¿La lección «Protocol Buffers y archivos .proto» es gratis?
Sí — el texto completo de «Protocol Buffers y archivos .proto» 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 «Protocol Buffers y archivos .proto»?
Tipos de mensajes, servicios y generación de código con protoc 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 1 de 4.
¿Cuánto tiempo toma la lección «Protocol Buffers y archivos .proto»?
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
- Protocol Buffers y archivos .proto
- Implementación de un servicio gRPC unario
- Streaming del servidor y del cliente
- Interceptores y metadatos de gRPC