golangのチュートリアルいるProtobuf

1、いるProtobufコンパイラprotocをダウンロード

住所:https://github.com/google/protobuf/releases

ウィンドウ:
    ダウンロード:protoc-3.3.0-win32.zip
    GOPATH / binにbinディレクトリに解凍、コピーprotoc.exe、GOPATH / binには、環境変数に追加しました。
    もちろん、他のディレクトリに配置され、環境変数がprotoc.exe見つけるために、システムをできるように、追加する必要があり
ます。Linux
    protoc-3.3.0-linux-x86_64.zipまたはprotoc-3.3.0-linux-x86_32.zip:ダウンロード
    、解凍をGOPATH / binにbinディレクトリにprotoc、GOPATH / binには、環境変数に追加しました。
    あなたは、コンパイルしてインストールしたい、とも自分自身をインストールするには、ソースコードをダウンロードし、最終的に環境変数に実行ファイルができます。


2、いるProtobufコンパイラプラグインprotoc-GEN・ゴー取得
    ディレクトリGOPATHに
    実行go get -u github.com/golang/protobuf/protoc-gen-go

    成功した場合、それはGOPATH / binにprotoc-GEN-GO.EXEファイルを生成します

 

3、ファイルtest.protoを作成します

//指定されたバージョン
//文言proto3とproto2多少異なる注意
=「proto3」構文を;

//パッケージ名、protocファイルを通過する際に生成された
テストのためのパッケージ変更;

//電話機タイプ
//列挙型は、最初のフィールドでなければなりません0
列挙{PHONETYPE
HOME = 0;
WORK = 1;
}

//携帯
メッセージ電話{
。PHONETYPEタイプ= 1、
列番号= 2;
}

//ら
メッセージは人が{
//識別番号の後の数字が示す
。のInt32 ID = 1を、
文字列2 =名前;
//は繰り返し繰り返しを表し、
複数の電話があるかもしれません//
繰り返し電話の電話= 3;
}

//情報ディレクトリ
メッセージContactBookは{
=人の人を繰り返さ1;
}

4.次のコマンドを実行します
 protoc --go_out = *。 .proto

Test.pb.goは、ファイルが生成されます、文書の具体的な内容は、私がスクリーンショットはありません。

 

5、使用しているProtobufは、言語に行きます

メインパッケージ; 

インポート(
"github.com/golang/protobuf/proto"
"go_dev / kongji /プロト/試験"
、 "IO / ioutil"
"OS"
"FMT"


FUNC書き込み(){
P1:=&test.Person {
イド:1、
名称: "小张"、
電話:[] * test.Phone {
{test.PhoneType_HOME、 "111111111"}、
{test.PhoneType_WORK、 "222222222"}、
}、
}。
P2:=&test.Person {
イド:2、
名称: "小王"、
電話:[] * test.Phone {
{test.PhoneType_HOME、 "333333333"}、
{test.PhoneType_WORK、 "444444444"




本:= {}&test.ContactBook;
book.Persons =アペンド(book.Persons、P1);
book.Persons =アペンド(book.Persons、P2);

//データ符号化された
データ、_:= proto.Marshal(書籍 ) ;
//ファイルデータ書き込み
ioutil.WriteFile( "./あるtest.txt"、データ、os.ModePermを);
}

{)(FUNCを読み取る
//データファイル読み取り
データを、_:= ioutil.ReadFile( " 。 )」/test.txt;
予約:&test.ContactBook = {};
//復号データ
proto.Unmarshal(データ、書籍);
のため_、V:=レンジbook.Persons {
fmt.Println(V.ID、V.名)
用_、VV =レンジv.Phones {
fmt.Println(vv.Type、vv.Number);
}
}
}

FUNCメイン(){
ライト()。
読む();
}

 

おすすめ

転載: www.cnblogs.com/smallleiit/p/10926794.html