1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 12:32:21 +00:00

ch4-02-fix typos

This commit is contained in:
sfw 2018-07-08 11:35:06 +08:00
parent a81b69f7d5
commit 8d4a027220

View File

@ -4,7 +4,7 @@ Protobuf是Protocol Buffers的简称它是Google公司开发的一种数据
## Protobuf入门 ## Protobuf入门
对于没有用过Protobuf读者建议先从官网了解下基本用法。这里我们尝试如何将Protobuf和RPC结合在一起使用通过Protobuf来最终保证RPC的接口规范和安全。Protobuf中最基本的数据单元是message是类似Go语言中结构体的存在。在message中可以嵌套message或其它的基础数据类型的成员。 对于没有用过Protobuf读者建议先从官网了解下基本用法。这里我们尝试如何将Protobuf和RPC结合在一起使用通过Protobuf来最终保证RPC的接口规范和安全。Protobuf中最基本的数据单元是message是类似Go语言中结构体的存在。在message中可以嵌套message或其它的基础数据类型的成员。
首先创建hello.proto文件其中包装HelloService服务中用到的字符串类型 首先创建hello.proto文件其中包装HelloService服务中用到的字符串类型
@ -18,7 +18,7 @@ message String {
} }
``` ```
开头的syntax语句表示采用Protobuf第三版本的语法。第三版的Protobuf对语言进行了提炼简化所有成员均采用类似Go语言中的零值初始化不再支持自定义默认值同时消息成员也不再支持required特性。然后package指令指明当前是main包这样可以和Go的包保持一致当然用户也可以针对不同的语言定制对应的包路径和名称。最后message关键字定义一个新的String类型在最终生成的Go语言代码中对应一个String结构体。String类型中只有一个字符串类型的value成员该成员的Protobuf编码时的成员编号为1。 开头的syntax语句表示采用Protobuf第三版本的语法。第三版的Protobuf对语言进行了提炼简化所有成员均采用类似Go语言中的零值初始化不再支持自定义默认值同时消息成员也不再支持required特性。然后package指令指明当前是main包这样可以和Go的包保持一致当然用户也可以针对不同的语言定制对应的包路径和名称。最后message关键字定义一个新的String类型在最终生成的Go语言代码中对应一个String结构体。String类型中只有一个字符串类型的value成员该成员的Protobuf编码时的成员编号为1。
在XML或JSON等数据描述语言中一般通过成员的名字来绑定对应的数据。但是Protobuf编码却是通过成员的唯一编号来绑定对应的数据因此Protobuf编码后数据的体积会比较小但是也非常不便于人类查阅。我们目前并不关注Protobuf的编码技术最终生成的Go结构体可以自由采用JSON或gob等编码格式因此大家可以暂时忽略Protobuf的成员编码部分。 在XML或JSON等数据描述语言中一般通过成员的名字来绑定对应的数据。但是Protobuf编码却是通过成员的唯一编号来绑定对应的数据因此Protobuf编码后数据的体积会比较小但是也非常不便于人类查阅。我们目前并不关注Protobuf的编码技术最终生成的Go结构体可以自由采用JSON或gob等编码格式因此大家可以暂时忽略Protobuf的成员编码部分。