0Pricing
Go Academy · Aula

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@latest

Gerando 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.proto

Tipos 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

  1. Protocol Buffers e arquivos .proto
  2. Implementando um serviço gRPC unário
  3. Streaming de servidor e cliente
  4. Interceptadores e metadados de gRPC
← Voltar para Go Academy