0Pricing
Go Academy · Lektion

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

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

Generierte 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

  1. Protocol Buffers und .proto-Dateien
  2. Einen unären gRPC-Service implementieren
  3. Server- und Client-Streaming
  4. gRPC-Interceptoren und Metadaten
← Zurück zu Go Academy