Protocol Buffers dan File .proto
Tipe pesan, layanan, dan pembuatan kode protoc
Protocol Buffers dan File .proto adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Apa itu Protocol Buffers?
Protocol Buffers (protobuf) adalah format serialisasi biner yang netral terhadap bahasa, yang dikembangkan oleh Google. Format ini lebih kecil dan lebih cepat daripada JSON serta merupakan format komunikasi baku untuk gRPC.
Sintaks berkas .proto
Tentukan pesan dan layanan dalam berkas .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; }Nomor bidang
Setiap bidang memiliki nomor unik (tag) yang digunakan dalam pengodean biner. Jangan pernah mengubah nomor bidang yang sudah ada setelah skema digunakan — tindakan tersebut merusak kompatibilitas.
Nilai bawaan proto3
Dalam proto3, semua bidang memiliki nilai bawaan (0 untuk angka, "" untuk string, false untuk bool). Tidak ada perbedaan antara wajib dan opsional — bidang yang hilang akan menggunakan nilai bawaan.
Memasang protoc
Pasang kompiler protobuf dan plugin 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@latestMembuat kode Go
Jalankan protoc untuk membuat struktur Go dan stub gRPC:
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
user/user.protoTipe yang dibuat
protoc membuat: satu struktur Go untuk setiap pesan, metode pengambil, antarmuka layanan, struktur server yang belum diimplementasikan, dan struktur klien dengan semua metode RPC.
Bidang berulang
Gunakan repeated untuk merepresentasikan daftar (dipetakan ke irisan Go):
message ListUsersResponse {
repeated User users = 1;
}Enumerasi
Tentukan enumerasi dalam proto3. Nilai pertama harus 0 (nilai bawaan):
enum Role {
ROLE_UNSPECIFIED = 0;
ROLE_USER = 1;
ROLE_ADMIN = 2;
}Tipe yang umum dikenal
Paket google/protobuf menyediakan tipe umum: Timestamp, Duration, Struct (mirip JSON), Any. Impor tipe-tipe tersebut dalam berkas .proto Anda.
import "google/protobuf/timestamp.proto";
message Event { google.protobuf.Timestamp created_at = 1; }Aturan kompatibilitas ke belakang
Perubahan yang aman: menambahkan bidang baru, menambahkan jenis pesan baru, dan menambahkan nilai enumerasi baru. Perubahan yang tidak aman: mengubah nomor bidang, mengubah jenis bidang, dan menghapus bidang (bidang tersebut akan diam-diam menjadi nilai bawaan).
Pemeriksaan Singkat
Apa yang harus benar mengenai nomor bidang dalam pesan protobuf?
Ringkasan: Protocol Buffers
Poin-poin penting:
- .proto mendefinisikan pesan (bidang + tipe) dan layanan (RPC)
- Nomor bidang bersifat permanen — jangan pernah menggunakan ulang atau mengubahnya
- protoc + plugin Go menghasilkan struktur Go dan stub gRPC
- bidang repeated → slice; enum harus dimulai dari 0
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Protocol Buffers dan File .proto” gratis?
Ya — teks lengkap “Protocol Buffers dan File .proto” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Protocol Buffers dan File .proto”?
Tipe pesan, layanan, dan pembuatan kode protoc Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Protocol Buffers dan File .proto” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Protocol Buffers dan File .proto
- Mengimplementasikan Layanan gRPC Unary
- Streaming Server dan Client
- Interceptor dan Metadata gRPC