Protocol Buffers und .proto-Dateien
Nachrichtentypen, Services und Codegenerierung mit protoc
Protocol Buffers und .proto-Dateien ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was sind Protocol Buffers?
Protocol Buffers (protobuf) ist ein sprachunabhängiges binäres Serialisierungsformat, das von Google entwickelt wurde. Es ist kleiner und schneller als JSON und das kanonische Übertragungsformat für gRPC.
.proto-Dateisyntax
Definieren Sie Nachrichten und Services in einer .proto-Datei:
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; }Feldnummern
Jedes Feld besitzt eine eindeutige Nummer (Tag), die bei der binären Kodierung verwendet wird. Ändern Sie vorhandene Feldnummern niemals, sobald das Schema verwendet wird – andernfalls wird die Kompatibilität gebrochen.
proto3-Standardwerte
In proto3 besitzen alle Felder Standardwerte (0 für Zahlen, "" für Strings, false für Bools). Es gibt keinen Unterschied zwischen required und optional – fehlende Felder erhalten den Standardwert.
protoc installieren
Installieren Sie den protobuf-Compiler und das Go-Plugin:
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@latestGo-Code generieren
Führen Sie protoc aus, um Go-Strukturen und gRPC-Stubs zu generieren:
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
user/user.protoGenerierte Typen
protoc generiert: eine Go-Struktur pro Nachricht, Getter-Methoden, ein Service-Interface, eine nicht implementierte Server-Struktur und eine Client-Struktur mit allen RPC-Methoden.
Wiederholte Felder
Verwenden Sie repeated, um eine Liste darzustellen (wird auf einen Go-Slice abgebildet):
message ListUsersResponse {
repeated User users = 1;
}Enums
Definieren Sie Aufzählungen in proto3. Der erste Wert muss 0 sein (der Standardwert):
enum Role {
ROLE_UNSPECIFIED = 0;
ROLE_USER = 1;
ROLE_ADMIN = 2;
}Bekannte Typen
Das Paket google/protobuf stellt häufig verwendete Typen bereit: Timestamp, Duration, Struct (JSON-ähnlich), Any. Importieren Sie sie in Ihre .proto-Datei.
import "google/protobuf/timestamp.proto";
message Event { google.protobuf.Timestamp created_at = 1; }Regeln für Abwärtskompatibilität
Sichere Änderungen: neue Felder hinzufügen, neue Nachrichtentypen hinzufügen, neue Enum-Werte hinzufügen. Unsicher: Feldnummern ändern, Feldtypen ändern, Felder entfernen (sie werden stillschweigend zum Standardwert).
Kurzer Test
Was muss für Feldnummern in einer protobuf-Nachricht gelten?
Zusammenfassung: Protocol Buffers
Wichtige Punkte:
- .proto definiert Nachrichten (Felder + Typen) und Services (RPCs)
- Feldnummern sind dauerhaft — niemals wiederverwenden oder ändern
- protoc + go-Plugin generiert Go-Structs und gRPC-Stubs
- repeated-Felder → Slices; Enums müssen bei 0 beginnen
Häufig gestellte Fragen
Ist die Lektion „Protocol Buffers und .proto-Dateien“ kostenlos?
Ja — der vollständige Text von „Protocol Buffers und .proto-Dateien“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Protocol Buffers und .proto-Dateien“?
Nachrichtentypen, Services und Codegenerierung mit protoc Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Protocol Buffers und .proto-Dateien“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Protocol Buffers und .proto-Dateien
- Einen unären gRPC-Service implementieren
- Server- und Client-Streaming
- gRPC-Interceptoren und Metadaten