Protobuf Là Gì Và Những Điều Căn Bản Cần Biết Về Nó

Vốn là một trong thằng say mê tốc độ, chạy xe 80,90km/h trên đường cao tốc nhỏng cơm trắng bữa, trong quá trình học hành bản thân luôn luôn giành thời hạn tìm hiểu coi tất cả phương án nào nkhô giòn hơn phương án hiện giờ không ? Và đương nhiên đã tiến công thay đổi lại bởi các nlỗi điển hình nổi bật như độ phức hợp và thời hạn thực thi, nhanh hao thì thực ra còn tuỳ nằm trong vào toàn cảnh, và thực chất của vấn đề buộc phải giải quyết và xử lý.

Bạn đang xem: Protobuf Là Gì Và Những Điều Căn Bản Cần Biết Về Nó

Sau tháng ngày dài làm việc cùng rất JSON, chỉ biết JSON thì được ông anh reviews mang đến thằng Protobuf, với cùng 1 câu nói “nkhô cứng lắm” bản thân liên hợp tác vào khám phá với quả tình nó nhanh thât.

Xem thêm: Hướng Dẫn Làm Passport Ở Tphcm, Hướng Dẫn Làm Passport Ở Sài Gòn Chỉ Mất 20 Phút


*
*
*
*


Và được tệp tin web3_user.pb.go, tiếp nối mình vẫn copy tệp tin này vào trong thư mục trongproject khu vực cất package web3_user và thực hiện, thuộc xem file output gồm gì làm sao.

// Code generated by protoc-gen-go. DO NOT EDIT.// source: web3_user.protopackage web3_userimport (fmt "fmt"prokhổng lồ "github.com/golang/protobuf/proto"math "math")// Reference imports lớn suppress errors if they are not otherwise used.var _ = prolớn.Marshalvar _ = fmt.Errorfvar _ = math.Inf// This is a compile-time assertion khổng lồ ensure that this generated file// is compatible with the proto lớn package it is being compiled against.// A compilation error at this line likely means your copy of the// prokhổng lồ package needs to be updated.const _ = proto lớn.ProtoPackageIsVersion3 // please tăng cấp the proto lớn packagetype ContactProtobuf struct PhoneNumber string `protobuf:"bytes,5,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"`Country string `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"`XXX_NoUnkeyedLiteral struct `json:"-"`XXX_unrecognized <>byte `json:"-"`XXX_sizecabít int32 `json:"-"`func (m *ContactProtobuf) Reset() *m = ContactProtobuf func (m *ContactProtobuf) String() string return prolớn.CompactTextString(m) func (*ContactProtobuf) ProtoMessage() func (*ContactProtobuf) Descriptor() (<>byte, <>int) return fileDescriptor_116e343673f7ffaf, <>int0func (m *ContactProtobuf) XXX_Unmarshal(b <>byte) error return xxx_messageInfo_ContactProtobuf.Unmarshal(m, b)func (m *ContactProtobuf) XXX_Marshal(b <>byte, deterministic bool) (<>byte, error) return xxx_messageInfo_ContactProtobuf.Marshal(b, m, deterministic)func (m *ContactProtobuf) XXX_Merge(src proto lớn.Message) xxx_messageInfo_ContactProtobuf.Merge(m, src)func (m *ContactProtobuf) XXX_Size() int return xxx_messageInfo_ContactProtobuf.Size(m)func (m *ContactProtobuf) XXX_DiscardUnknown() xxx_messageInfo_ContactProtobuf.DiscardUnknown(m)var xxx_messageInfo_ContactProtobuf prokhổng lồ.InternalMessageInfofunc (m *ContactProtobuf) GetPhoneNumber() string if m != nil return m.PhoneNumberreturn ""func (m *ContactProtobuf) GetCountry() string if m != nil return m.Countryreturn ""type UserProtobuf struct FirstName string `protobuf:"bytes,1,opt,name=first_name,json=firstName,proto3" json:"first_name,omitempty"`LastName string `protobuf:"bytes,2,opt,name=last_name,json=lastName,proto3" json:"last_name,omitempty"`Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"tin nhắn,omitempty"`Liên hệ <>*ContactProtobuf `protobuf:"bytes,4,rep,name=liên hệ,proto3" json:"tương tác,omitempty"`XXX_NoUnkeyedLiteral struct `json:"-"`XXX_unrecognized <>byte `json:"-"`XXX_sizecabít int32 `json:"-"`func (m *UserProtobuf) Reset() *m = UserProtobuf func (m *UserProtobuf) String() string return proto lớn.CompactTextString(m) func (*UserProtobuf) ProtoMessage() func (*UserProtobuf) Descriptor() (<>byte, <>int) return fileDescriptor_116e343673f7ffaf, <>int1func (m *UserProtobuf) XXX_Unmarshal(b <>byte) error return xxx_messageInfo_UserProtobuf.Unmarshal(m, b)func (m *UserProtobuf) XXX_Marshal(b <>byte, deterministic bool) (<>byte, error) return xxx_messageInfo_UserProtobuf.Marshal(b, m, deterministic)func (m *UserProtobuf) XXX_Merge(src prokhổng lồ.Message) xxx_messageInfo_UserProtobuf.Merge(m, src)func (m *UserProtobuf) XXX_Size() int return xxx_messageInfo_UserProtobuf.Size(m)func (m *UserProtobuf) XXX_DiscardUnknown() xxx_messageInfo_UserProtobuf.DiscardUnknown(m)var xxx_messageInfo_UserProtobuf prokhổng lồ.InternalMessageInfofunc (m *UserProtobuf) GetFirstName() string if m != nil return m.FirstNamereturn ""func (m *UserProtobuf) GetLastName() string if m != nil return m.LastNamereturn ""func (m *UserProtobuf) GetEmail() string if m != nil return m.Emailreturn ""func (m *UserProtobuf) GetContact() <>*ContactProtobuf if m != nil return m.Contactreturn nilfunc init() proto.RegisterType((*ContactProtobuf)(nil), "web3_user.ContactProtobuf")prolớn.RegisterType((*UserProtobuf)(nil), "web3_user.UserProtobuf")func init() proto.RegisterFile("web3_user.proto", fileDescriptor_116e343673f7ffaf) var fileDescriptor_116e343673f7ffaf = <>byte// 190 bytes of a gzipped FileDescriptorProto0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2a, 0x2d, 0x4e, 0x2d,0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x01, 0xb1, 0x95, 0x7c, 0xb9, 0xf8, 0x9d, 0xf3,0xf3, 0x4a, 0x12, 0x93, 0x4b, 0x02, 0x40, 0xa2, 0x49, 0xa5, 0x69, 0x42, 0x0a, 0x5c, 0xdc, 0x05,0x19, 0xf9, 0x79, 0xa9, 0x7e, 0xa5, 0xb9, 0x49, 0xa9, 0x45, 0x12, 0xac, 0x0a, 0x8c, 0x1a, 0x9c,0x41, 0xc8, 0x42, 0x42, 0x12, 0x5c, 0xec, 0xc9, 0xf9, 0xa5, 0x79, 0x25, 0x45, 0x95, 0x12, 0x6c,0x60, 0x59, 0x18, 0x57, 0x69, 0x22, 0x23, 0x17, 0x4f, 0x68, 0x71, 0x6a, 0x11, 0xdc, 0x30, 0x59,0x2e, 0xae, 0xb4, 0xcc, 0xa2, 0xe2, 0x92, 0xf8, 0xbc, 0xc4, 0xdc, 0x54, 0x09, 0x46, 0xb0, 0x6a,0x4e, 0xb0, 0x88, 0x5f, 0x62, 0x6e, 0xaa, 0x90, 0x34, 0x17, 0x67, 0x4e, 0x22, 0x4c, 0x96, 0x09,0x2c, 0xcb, 0x01, 0x12, 0x00, 0x4b, 0x8a, 0x70, 0xb1, 0xa6, 0xe6, 0x26, 0x66, 0xe6, 0x48, 0x30,0x83, 0x25, 0xđôi mươi, 0x1c, 0x21, 0x7d, 0x90, 0xe5, 0x60, 0x17, 0x4b, 0xb0, 0x28, 0x30, 0x6b, 0x70,0x1b, 0x89, 0xea, 0x81, 0x7d, 0x85, 0xe6, 0x8d, 0x20, 0x98, 0xaa, 0x24, 0x36, 0xb0, 0x7f, 0x8d,0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x87, 0xe1, 0xdb, 0xfd, 0x00, 0x00, 0x00,Xem qua rất có thể thấy, compiler vẫn generate ra một struct cùng các method nhỏng Marshal , UnMarshal nhằm encode message thanh lịch binary với decode lớn message struct từ bỏ binary. Và để khiến cho một message thì ta làm nlỗi sau.

Leave a Reply

Your email address will not be published. Required fields are marked *

x

Welcome Back!

Login to your account below

Retrieve your password

Please enter your username or email address to reset your password.