0Pricing
Go Academy · Leçon

Protocol Buffers et fichiers .proto

Types de messages, services et génération de code avec protoc

Protocol Buffers et fichiers .proto est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Que sont les Protocol Buffers ?

Protocol Buffers (protobuf) est un format de sérialisation binaire indépendant du langage, développé par Google. Il est plus compact et plus rapide que JSON et constitue le format filaire de référence de gRPC.

Syntaxe du fichier .proto

Définissez les messages et les services dans un fichier .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; }

Numéros de champs

Chaque champ possède un numéro unique (étiquette) utilisé dans l’encodage binaire. Ne modifiez jamais les numéros de champs existants une fois le schéma utilisé : cela rompt la compatibilité.

Valeurs par défaut de proto3

Dans proto3, tous les champs possèdent une valeur par défaut (0 pour les nombres, "" pour les chaînes, false pour les booléens). Il n’existe pas de distinction entre required et optional : les champs absents prennent la valeur par défaut.

Installer protoc

Installez le compilateur protobuf et le module d’extension 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

Générer du code Go

Exécutez protoc pour générer les structures Go et les squelettes gRPC :

protoc --go_out=. --go_opt=paths=source_relative \
       --go-grpc_out=. --go-grpc_opt=paths=source_relative \
       user/user.proto

Types générés

protoc génère : une structure Go par message, des méthodes d’accès, une interface de service, une structure de serveur non implémentée et une structure client contenant toutes les méthodes RPC.

Champs répétés

Utilisez repeated pour représenter une liste (correspond à une tranche Go) :

message ListUsersResponse {
    repeated User users = 1;
}

Énumérations

Définissez des énumérations dans proto3. La première valeur doit être 0 (la valeur par défaut) :

enum Role {
    ROLE_UNSPECIFIED = 0;
    ROLE_USER        = 1;
    ROLE_ADMIN       = 2;
}

Types courants

Le paquet google/protobuf fournit des types courants : Timestamp, Duration, Struct (semblable à JSON), Any. Importez-les dans votre fichier .proto.

import "google/protobuf/timestamp.proto";
message Event { google.protobuf.Timestamp created_at = 1; }

Règles de compatibilité avec les versions antérieures

Modifications sûres : ajouter de nouveaux champs, ajouter de nouveaux types de messages, ajouter de nouvelles valeurs d’énumération. Modifications dangereuses : changer les numéros de champs, changer les types de champs, supprimer des champs (ils deviennent silencieusement la valeur par défaut).

Vérification rapide

Que doit-on toujours respecter concernant les numéros de champ dans un message protobuf ?

Récapitulatif : Protocol Buffers

Points clés :

  • .proto définit les messages (champs + types) et les services (RPC)
  • Les numéros de champ sont permanents : ne les réutilisez ni ne les modifiez jamais
  • protoc + le greffon Go génèrent les structures Go et les squelettes gRPC
  • Les champs repeated deviennent des slices ; les énumérations doivent commencer à 0

Questions Fréquemment Posées

La leçon « Protocol Buffers et fichiers .proto » est-elle gratuite ?

Oui — le texte complet de « Protocol Buffers et fichiers .proto » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Protocol Buffers et fichiers .proto » ?

Types de messages, services et génération de code avec protoc Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Protocol Buffers et fichiers .proto » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Protocol Buffers et fichiers .proto
  2. Implémenter un service gRPC unaire
  3. Flux côté serveur et côté client
  4. Intercepteurs gRPC et métadonnées
← Retour à Go Academy