Protocol Buffers e arquivos .proto
Tipos de mensagens, serviços e geração de código com protoc
Protocol Buffers e arquivos .proto é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 1 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 são Protocol Buffers?
Protocol Buffers (protobuf) é um formato de serialização binária independente de linguagem, desenvolvido pelo Google. Ele é menor e mais rápido que JSON e é o formato canônico de transmissão do gRPC.
Sintaxe de arquivo .proto
Defina mensagens e serviços em um arquivo .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 dos campos
Cada campo tem um número exclusivo (tag), usado na codificação binária. Nunca altere os números de campos existentes depois que o esquema estiver em uso — isso quebra a compatibilidade.
Padrões do proto3
Em proto3, todos os campos têm valores padrão (0 para números, "" para strings, false para valores bool). Não há distinção entre obrigatório e opcional — os campos ausentes recebem o valor padrão.
Instalando o protoc
Instale o compilador do protobuf e o plug-in do 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@latestGerando código Go
Execute o protoc para gerar estruturas Go e stubs gRPC:
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
user/user.protoTipos gerados
O protoc gera: uma estrutura Go por mensagem, métodos de acesso, uma interface de serviço, uma estrutura de servidor não implementada e uma estrutura de cliente com todos os métodos RPC.
Campos repetidos
Use repeated para representar uma lista (mapeada para uma fatia do Go):
message ListUsersResponse {
repeated User users = 1;
}Enumerações
Defina enumerações no proto3. O primeiro valor deve ser 0 (o padrão):
enum Role {
ROLE_UNSPECIFIED = 0;
ROLE_USER = 1;
ROLE_ADMIN = 2;
}Tipos conhecidos
O pacote google/protobuf fornece tipos comuns: Timestamp, Duration, Struct (semelhante a JSON), Any. Importe-os no seu arquivo .proto.
import "google/protobuf/timestamp.proto";
message Event { google.protobuf.Timestamp created_at = 1; }Regras de compatibilidade com versões anteriores
Mudanças seguras: adicionar novos campos, adicionar novos tipos de mensagem e adicionar novos valores de enumeração. Mudanças inseguras: alterar números de campos, alterar tipos de campos e remover campos (eles se tornam silenciosamente o valor padrão).
Verificação rápida
O que deve ser verdadeiro sobre os números dos campos em uma mensagem protobuf?
Recapitulação: Protocol Buffers
Pontos principais:
- .proto define mensagens (campos + tipos) e serviços (RPCs)
- Os números dos campos são permanentes — nunca os reutilize nem altere
- protoc + plug-in do Go geram estruturas Go e códigos auxiliares gRPC
- campos repeated → fatias; os enums devem começar em 0
Perguntas Frequentes
A aula “Protocol Buffers e arquivos .proto” é grátis?
Sim — o texto completo de “Protocol Buffers e arquivos .proto” é 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 “Protocol Buffers e arquivos .proto”?
Tipos de mensagens, serviços e geração de código com protoc 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 1 de 4.
Quanto tempo leva a aula “Protocol Buffers e arquivos .proto”?
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
- Protocol Buffers e arquivos .proto
- Implementando um serviço gRPC unário
- Streaming de servidor e cliente
- Interceptadores e metadados de gRPC