0Pricing
Go Academy · บทเรียน

Protocol Buffers และไฟล์ .proto

ชนิดข้อความ บริการ และการสร้างโค้ดด้วย protoc

Protocol Buffers และไฟล์ .proto เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

Protocol Buffers คืออะไร

Protocol Buffers (protobuf) เป็นรูปแบบการทำให้ข้อมูลเป็นอนุกรมแบบไบนารีที่ไม่ขึ้นกับภาษา พัฒนาโดย Google มีขนาดเล็กและทำงานเร็วกว่า JSON และเป็นรูปแบบข้อมูลบนสายส่งมาตรฐานสำหรับ gRPC

ไวยากรณ์ไฟล์ .proto

กำหนดข้อความและบริการในไฟล์ .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; }

หมายเลขฟิลด์

แต่ละฟิลด์มีหมายเลขเฉพาะ (แท็ก) ที่ใช้ในการเข้ารหัสแบบไบนารี ห้ามเปลี่ยนหมายเลขฟิลด์ที่มีอยู่หลังจากเริ่มใช้งานสคีมาแล้ว เพราะจะทำลายความเข้ากันได้

ค่าเริ่มต้นของ proto3

ใน proto3 ฟิลด์ทั้งหมดมีค่าเริ่มต้น (0 สำหรับตัวเลข, "" สำหรับสตริง และ false สำหรับค่าบูล) ไม่มีความแตกต่างระหว่าง required กับ optional — ฟิลด์ที่หายไปจะใช้ค่าเริ่มต้น

การติดตั้ง protoc

ติดตั้งคอมไพเลอร์ protobuf และปลั๊กอิน 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

การสร้างโค้ด Go

เรียกใช้ protoc เพื่อสร้างโครงสร้าง Go และโครงร่าง gRPC:

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

ชนิดที่สร้างขึ้น

protoc จะสร้างโครงสร้าง Go หนึ่งรายการต่อข้อความ เมธอด getter อินเทอร์เฟซบริการ โครงสร้างเซิร์ฟเวอร์ที่ยังไม่ได้ใช้งาน และโครงสร้างไคลเอนต์ที่มีเมธอด RPC ทั้งหมด

ฟิลด์แบบซ้ำ

ใช้ repeated เพื่อแทนรายการ ซึ่งจะแปลงเป็นสไลซ์ของ Go:

message ListUsersResponse {
    repeated User users = 1;
}

ชนิดแจงนับ

กำหนดชนิดแจงนับใน proto3 ค่าแรกต้องเป็น 0 ซึ่งเป็นค่าเริ่มต้น:

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

ชนิดที่รู้จักกันดี

แพ็กเกจ google/protobuf มีชนิดทั่วไป ได้แก่ Timestamp, Duration, Struct (คล้าย JSON) และ Any ให้นำเข้าชนิดเหล่านี้ในไฟล์ .proto

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

กฎความเข้ากันได้ย้อนหลัง

การเปลี่ยนแปลงที่ปลอดภัย: เพิ่มฟิลด์ใหม่ เพิ่มชนิดข้อความใหม่ และเพิ่มค่าแจงนับใหม่ การเปลี่ยนแปลงที่ไม่ปลอดภัย: เปลี่ยนหมายเลขฟิลด์ เปลี่ยนชนิดฟิลด์ และลบฟิลด์ (ฟิลด์เหล่านั้นจะกลายเป็นค่าเริ่มต้นโดยไม่มีการแจ้งเตือน)

ตรวจสอบความเข้าใจอย่างรวดเร็ว

หมายเลขฟิลด์ในข้อความ protobuf ต้องมีคุณสมบัติอย่างไร

สรุป: Protocol Buffers

ประเด็นสำคัญ:

  • .proto กำหนดข้อความ (ฟิลด์และชนิดข้อมูล) และบริการ (RPC)
  • หมายเลขฟิลด์เป็นค่าถาวร — ห้ามนำกลับมาใช้ซ้ำหรือเปลี่ยนแปลง
  • ปลั๊กอิน protoc + go จะสร้างโครงสร้าง Go และโครงร่าง gRPC
  • ฟิลด์แบบซ้ำ → สไลซ์; ค่าแจกแจงต้องเริ่มต้นที่ 0

คำถามที่พบบ่อย

บทเรียน “Protocol Buffers และไฟล์ .proto” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Protocol Buffers และไฟล์ .proto” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Protocol Buffers และไฟล์ .proto”

ชนิดข้อความ บริการ และการสร้างโค้ดด้วย protoc คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “Protocol Buffers และไฟล์ .proto” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม

ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Protocol Buffers และไฟล์ .proto
  2. การใช้งานบริการ gRPC แบบเอกภาคี
  3. การสตรีมฝั่งเซิร์ฟเวอร์และไคลเอนต์
  4. อินเตอร์เซปเตอร์และข้อมูลเมทาดาทาของ gRPC
← กลับไปที่ Go Academy