Go Academy · पाठ

Protocol Buffers और .proto फ़ाइलें

संदेश प्रकार, सेवाएँ और protoc से कोड निर्माण

पाठ 1, कुल 4 में से13 चरण

Protocol Buffers और .proto फ़ाइलें, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Go Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Protocol Buffers क्या हैं

Protocol Buffers (protobuf), Google द्वारा विकसित language-neutral binary serialization format है। यह JSON से छोटा और तेज़ है तथा gRPC के लिए canonical wire format है।

.proto file syntax

.proto file में messages और services परिभाषित करें:

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; }

फ़ील्ड संख्याएँ

हर field की एक विशिष्ट संख्या (tag) होती है, जिसका उपयोग binary encoding में किया जाता है। Schema के उपयोग में आ जाने के बाद मौजूदा field numbers को कभी न बदलें — इससे compatibility टूट जाती है।

proto3 defaults

proto3 में सभी fields के default values होते हैं (numbers के लिए 0, strings के लिए "", bools के लिए false)। required और optional के बीच कोई अंतर नहीं होता — अनुपस्थित fields default value ले लेते हैं।

protoc इंस्टॉल करना

protobuf compiler और Go plugin install करें:

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 बनाना

Go structs और gRPC stubs बनाने के लिए protoc चलाएँ:

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

बनाए गए types

protoc बनाता है: हर message के लिए एक Go struct, getter methods, एक service interface, एक unimplemented server struct और सभी RPC methods वाला client struct।

दोहराए गए fields

सूची को दर्शाने के लिए repeated का उपयोग करें (यह Go slice में map होता है):

message ListUsersResponse {
    repeated User users = 1;
}

Enums

proto3 में enumerations परिभाषित करें। पहला value 0 होना चाहिए (default):

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

पूर्वनिर्धारित types

google/protobuf package सामान्य types उपलब्ध कराता है: Timestamp, Duration, Struct (JSON जैसा), Any। इन्हें अपनी .proto file में import करें।

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

पिछली versions के साथ संगतता के नियम

सुरक्षित बदलाव: नए fields जोड़ना, नए message types जोड़ना, नए enum values जोड़ना। असुरक्षित बदलाव: field numbers बदलना, field types बदलना, fields हटाना (वे चुपचाप default value बन जाते हैं)।

त्वरित जाँच

प्रोटोबफ़ संदेश में फ़ील्ड नंबरों के बारे में क्या सत्य होना चाहिए?

पुनरावृत्ति: Protocol Buffers

मुख्य बिंदु:

  • .proto संदेशों (फ़ील्ड और प्रकार) तथा सेवाओं (RPC) को परिभाषित करता है
  • फ़ील्ड नंबर स्थायी होते हैं — उनका कभी दोबारा उपयोग या परिवर्तन न करें
  • protoc + Go प्लगइन Go संरचनाएँ और gRPC स्टब उत्पन्न करते हैं
  • repeated फ़ील्ड → स्लाइस; एनम का आरंभ 0 से होना चाहिए
शुरुआत निःशुल्क

एआई शिक्षक के साथ Go सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “Protocol Buffers और .proto फ़ाइलें” पाठ निःशुल्क है?

हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Protocol Buffers और .proto फ़ाइलें” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Protocol Buffers और .proto फ़ाइलें” में मैं क्या सीखूँगा?

संदेश प्रकार, सेवाएँ और protoc से कोड निर्माण आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“Protocol Buffers और .proto फ़ाइलें” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Protocol Buffers और .proto फ़ाइलें
  2. एकल gRPC सेवा लागू करना
  3. सर्वर और क्लाइंट स्ट्रीमिंग
  4. gRPC इंटरसेप्टर और मेटाडेटा
← Go Academy पर वापस जाएँ