google protobuf(2.6.1)

google protobuf 编译安装(Linux)

下载:

protobuf-2.6.1.tar.gz MD5(f3916ce13b7fcb3072a1fa8cf02b2423)

编译:

tar -zxpvf protobuf-2.6.1.tar.gz;

cd protobuf-2.6.1;

./configure && make && make install

Golang 安装google protobuf

go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

protoc --proto_path=src --go_out=build/gen src/foo.proto src/bar/baz.proto

Specifying Field Rules

You specify that message fields are one of the following:

  • required: a well-formed message must have exactly one of this field.
  • optional: a well-formed message can have zero or one of this field (but not more than one).
  • repeated: this field can be repeated any number of times (including zero) in a well-formed message. The order of the repeated values will be preserved.

Scalar Value Types

A scalar message field can have one of the following types – the table shows the type specified in the .proto file, and the corresponding type in the automatically generated class:

.proto TypeNotesC++ TypeJava TypePython Type[2]Go Type
double   double double float *float64
float   float float float *float32
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int *int32
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long[3] *int64
uint32 Uses variable-length encoding. uint32 int[1] int/long[3] *uint32
uint64 Uses variable-length encoding. uint64 long[1] int/long[3] *uint64
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int *int32
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long[3] *int64
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 228. uint32 int[1] int *uint32
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 256. uint64 long[1] int/long[3] *uint64
sfixed32 Always four bytes. int32 int int *int32
sfixed64 Always eight bytes. int64 long int/long[3] *int64
bool   bool boolean bool *bool
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode[4] *string
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte
posted @ 2016-06-25 15:52  RushoutAsia  阅读(748)  评论(0编辑  收藏  举报