开发学院

您的位置:首页>教程>正文

教程正文

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},
        },
}