Goでプロトコルバッファを使用する方法の非常に短い例。 proto3、つまり プロトコルの3番目のバージョン(現在はアルファ版)、一般化された例は2番目のバージョンにも当てはまります。 プロトコルバッファ自体の説明はありません。 しかし、なぜ引く
準備する
3番目のバージョンにはドキュメントがないため、
ここにアクセスしてダウンロードしてください。 インストール(そこではすべて簡単です)。 Goの場合、すべてが
ここにあり
ます 。 インストール自体
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
~/.gitconfig
指定する場合は
-f
が必要になる場合があります
[url "ssh://git@github.com/"] insteadOf = https:
Protoclバッファにまだ慣れていない場合は、2番目のバージョンの説明があります。 3番目のバージョンについては、まだドキュメントがありませんが、それだけ
で満足できるもの
です 。
例
たとえば、数値の配列と文字列を保存し、それらを読み返します。 さらに、新しいプロジェクトのルートにいると考えます。 protoファイルは次のようになります
msg / msg.proto // C/C++ /* */ // 3, - syntax = "proto3"; // , go- package msg; // , message Msg { // _ = _ string key = 1; // repeated slice repeated int64 value = 2; } /* required extensions extensions ( ) Any */ // Sublime
ここで、protoファイルをコンパイルする必要があります
protoc --go_out=. msg/*.proto
その結果、このようなファイルを取得します
次に、構造を作成し、そのバイトを書き込み、それを読み戻します
main.go package main import ( "log" "./msg" "github.com/golang/protobuf/proto" ) func main() {
ご覧のとおり、「蒸しカブより簡単です。」 さらに深く掘り下げてみると、「メッセージ」のタイプが最初に定義されないように「メッセージ」を保存する特定のベースを作成し、これらの「メッセージ」を特定の構造のメンバーシップに保存したい場合があります。 言い換えれば、私たちが与えたものを特定の形式で保存するライブラリを持つことです。 プロトコルバッファの3番目のバージョンであるproto3では、任意の型を格納するためにAny型が実装されています。 リリースノートにも書いてありますが、実際のところこれまでのところです。 待たなければなりません。 ただし、上記のリンクからオプションを見ると、原則が明確になります-それは実装次第です。 次のようになります。
message Any { string type_url = 1;
それはどういう意味ですか...しかし、長い話、
例を見てみましょう。 本質的に、これは、使用されるすべてのタイプとダブルマーシャリングの登録です。ある種のマーシャリングと、基本構造のマーシャリングです。 これはすべて、反射で乱暴に散らばっています。 はい-熟考は長い時間を要します。何もする必要はありません。 それだけです
参照先
GitHubプロトコルバッファリリースそこに、トラッカーGoのプロトコルバッファの1つの実装プロトコルバッファーv2ガイドそこで、基本的なデータ型更新する