1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 20:52:22 +00:00

Merge pull request #177 from fuwensun/pr4-2-7

ch4-02-fix typos
This commit is contained in:
chai2010 2018-07-05 13:50:08 +08:00 committed by GitHub
commit a46395cfdd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -22,7 +22,7 @@ message String {
在XML或JSON等数据描述语言中一般通过成员的名字来绑定对应的数据。但是Protobuf编码却是通过成员的唯一编号来绑定对应的数据因此Protobuf编码后数据的体积会比较小但是也非常不便于人类查阅。我们目前并不关注Protobuf的编码技术最终生成的Go结构体可以自由采用JSON或gob等编码格式因此大家可以暂时忽略Protobuf的成员编码部分。 在XML或JSON等数据描述语言中一般通过成员的名字来绑定对应的数据。但是Protobuf编码却是通过成员的唯一编号来绑定对应的数据因此Protobuf编码后数据的体积会比较小但是也非常不便于人类查阅。我们目前并不关注Protobuf的编码技术最终生成的Go结构体可以自由采用JSON或gob等编码格式因此大家可以暂时忽略Protobuf的成员编码部分。
Protobuf核心的工具集是C++语言开发的在官方的protoc编译器中并不支持Go语言。要想基于上面的hello.proto文件生成相应的Go代码需要安装相应的工具。首先是安装官方的protoc工具可以从 https://github.com/google/protobuf/releases 下载。然后是安装针对Go语言的代码生成插件可以通过`go get github.com/golang/protobuf/protoc-gen-go`命令安装。 Protobuf核心的工具集是C++语言开发的在官方的protoc编译器中并不支持Go语言。要想基于上面的hello.proto文件生成相应的Go代码需要安装相应的工具。首先是安装官方的protoc工具可以从 https://github.com/google/protobuf/releases 下载。然后是安装针对Go语言的代码生成插件可以通过`go get github.com/golang/protobuf/protoc-gen-go`命令安装。
然后通过以下命令生成相应的Go代码 然后通过以下命令生成相应的Go代码
@ -30,7 +30,7 @@ Protobuf核心的工具集是C++语言开发的在官方的protoc编译器中
$ protoc --go_out=. hello.proto $ protoc --go_out=. hello.proto
``` ```
其中`go_out`参数告知protoc编译器加载对应的protoc-gen-go工具然后通过该工具生成代码生成代码放到当前目录。最后是一系列要处理的protobuf文件的列表。 其中`go_out`参数告知protoc编译器加载对应的protoc-gen-go工具然后通过该工具生成代码生成代码放到当前目录。最后是一系列要处理的protobuf文件的列表。
这里只生成了一个hello.pb.go文件其中String结构体内容如下 这里只生成了一个hello.pb.go文件其中String结构体内容如下
@ -57,7 +57,7 @@ func (m *String) GetValue() string {
} }
``` ```
生成的结构体中有一些以`XXX_`为前缀名字的成员目前可以忽略这些成员。同时String类型还自动生成了一组方法其中ProtoMessage方法表示这是一个实现了proto.Message接口的方法。此外Protobuf还为每个成员生成了一个Get方法Get方法不仅可以处理空指针类型而且可以和Protobuf第二版的方法保持一致第二版的自定义默认值特性依赖这类方法 生成的结构体中有一些以`XXX_`名字前缀的成员目前可以忽略这些成员。同时String类型还自动生成了一组方法其中ProtoMessage方法表示这是一个实现了proto.Message接口的方法。此外Protobuf还为每个成员生成了一个Get方法Get方法不仅可以处理空指针类型而且可以和Protobuf第二版的方法保持一致第二版的自定义默认值特性依赖这类方法
基于新的String类型我们可以重新实现HelloService 基于新的String类型我们可以重新实现HelloService