Protocol Buffer Go实例教程:编译Protocol Buffer
现在你有了一个.proto文件,你需要做的下一件事就是生成你需要读写地址簿(以及个人和电话号码)信息的类。为此,您需要在您的.proto文件上运行Protocol Buffer编译器:
如果您尚未安装编译器,请下载软件包,并按照自述文件中的说明操作。
运行以下命令安装Go语言的Protocol Buffer插件:
go get -u github.com/golang/protobuf/protoc-gen-go
编译器插件protocol-gen-go将安装在$GOBIN中,默认为$GOPATH/bin。协议编译器协议必须在$PATH中找到它。
现在运行编译器,指定源目录(您的应用程序的源代码所在的位置——如果不提供值,则使用当前目录)、目标目录(您希望生成的代码所在的位置;通常与$SRC_DIR相同),以及到您的. proto的路径,下面是命令:
protoc -I=$SRC_DIR --go_out=$DST_DIR $SRC_DIR/addressbook.proto
因为您想要Go 类,所以使用了 --go_out选项——其他受支持的语言也提供了类似的选项。
这会生成addressbook.pb.go到指定的目标目录。
Protocol Buffer API
生成addressbook.pb.go可为您提供以下有用类型:
带有People字段的通讯簿结构。
包含姓名、身份证、电子邮件和电话字段的Person结构。
带有数字和类型字段的Person_PhoneNumber结构。
Person_PhoneType类型和为Person.PhoneType枚举中的每个值定义的值。
您可以阅读更多关于Go生成代码指南中生成的具体内容的详细信息,但是在大多数情况下,您可以将它们视为非常普通的Go类型。
下面是list_people命令单元测试中的一个例子,演示了如何创建一个Person实例:
p := pb.Person{ Id: 1234, Name: "John Doe", Email: "jdoe@example.com", Phones: []*pb.Person_PhoneNumber{ {Number: "555-4321", Type: pb.Person_HOME}, }, }