インターネット技術の発展に伴い、Golang 言語に興味を持つ初心者プログラマーが増えています。新しいプログラミング言語として、golang はプログラマーによって使用されることが増えています。 golang 言語に習熟すると、プログラマーは高品質のアプリケーションを迅速に開発できるようになり、作業効率が向上します。この記事では、golang を使用して protobuf を構築する方法を検討します。
1. protobuf の概要
Protobuf (正式名は Protocol Buffers) は、データ形式、データ ストレージ、およびデータ交換を記述し、さまざまなプログラミング言語用のインターフェイス ライブラリを提供するプロトコルです。 protobuf は、構造化データをシリアル化し、ストレージ領域を効率的に圧縮でき、優れたスケーラビリティを備えているため、さまざまな分散システムでの使用に非常に適しています。
2. protobuf のインストール
protobuf を使用するには、まずシステムに protobuf をインストールする必要があります。以下では、Linux システムに protobuf をインストールする方法を紹介します。
protobuf をインストールする前に、最初にいくつかの依存ライブラリをインストールする必要があります。次のコマンドを使用して依存ライブラリをインストールできます:
sudo apt-get update sudo apt-get install autoconf automake libtool curl make g++ unzip
protobuf の公式 Web サイトにアクセスして、protobuf ソース コード パッケージをダウンロードできます。 : https://github.com/protocolbuffers/protobuf/releases。現在のオペレーティング システムに適したバージョンを選択し、ダウンロード後、指定したパスに解凍します。
解凍された protobuf ソース コード ディレクトリで次のコマンドを実行します。
./autogen.sh ./configure make make check sudo make install sudo ldconfig
上記の手順が正常に実行されると、protobuf はbe インストールは成功しました。
3. protobuf の使用
protobuf をインストールした後、protobuf の使用を開始できます。以下は、golang を通じて protobuf を使用する手順の簡単な例です。
データ構造を .gproto ファイルで定義する必要があります。たとえば、Employee データ構造を次のように定義します。
syntax = "proto3"; package myproto; message Employee { string name = 1; int32 id = 2; string email = 3; }
上記のコードは、Employee という名前のデータ構造を定義します。これには、name、id、および email の 3 つのフィールドが含まれます。各フィールドには、異なる実装間の通信に使用される一意の識別番号があります。
データ構造を定義した後、protobuf コンパイラーを使用してそれを golang コードに変換する必要があります。次のコマンドを使用して golang ファイルを生成します。
protoc --go_out=. employee.proto
ここで、employee.proto は定義されたデータ構造ファイルであり、--go_out オプションは golang コードの生成を示します。このコマンドは、同じディレクトリにemployee.pb.goファイルを生成します。
golang コードを生成した後、それを golang で使用できます。以下は、Employee オブジェクトを作成し、シリアル化して、逆シリアル化するサンプル プログラムです。
package main import ( "bytes" "fmt" "myproto" "strconv" "github.com/golang/protobuf/proto" ) func main() { // 创建一个Employee对象 employee := &myproto.Employee{ Name: "张三", Id: 10001, Email: "zhangsan@qq.com", } fmt.Println("Employee对象:", employee) // 将Employee对象序列化为二进制数据 data, err := proto.Marshal(employee) if err != nil { fmt.Println("序列化失败:", err) return } fmt.Println("序列化后的二进制数据:", data) // 将二进制数据反序列化为Employee对象 newEmployee := &myproto.Employee{} err = proto.Unmarshal(data, newEmployee) if err != nil { fmt.Println("反序列化失败:", err) return } fmt.Println("反序列化后的Employee对象:", newEmployee) // 检查序列化和反序列化是否成功 if newEmployee.Name != employee.Name || newEmployee.Id != employee.Id || newEmployee.Email != employee.Email { fmt.Println("反序列化结果与原始对象不一致!") return } fmt.Println("序列化和反序列化成功!") }
上記のコードでは、protobuf によって提供される proto.Marshal メソッドと proto.Unmarshal メソッドを使用して、Employee オブジェクトをシリアル化および逆シリアル化します。プログラムが正常に実行されると、出力結果が次のようになることを確認できます:
Employee对象: name:"张三" id:10001 email:"zhangsan@qq.com" 序列化后的二进制数据: [10 6 230 181 139 229 173 151 16 1 26 12 122 104 97 110 103 115 97 110 64 113 113 46 99 111 109] 反序列化后的Employee对象: name:"张三" id:10001 email:"zhangsan@qq.com" 序列化和反序列化成功!
IV. まとめ
この記事では、golang を使用して protobuf をビルドする方法を紹介しました。まず protobuf 依存関係ライブラリをインストールし、次に protobuf をコンパイルし、最後に golang で protobuf を使用してシリアル化と逆シリアル化を行いました。 protobuf は golang での使用に加えて、Python や Java などの他のプログラミング言語でも使用でき、分散システムでのデータ交換に非常に適しています。この記事が、プログラマーが protobuf テクノロジーをよりよく学び、習得するのに役立つことを願っています。
以上がgolang を使用して protobuf を構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。