1.安装protoc-gen-go

默认下载安装的protoc是无法生成go代码的,需要安装一个插件,执行命令进行安装:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

这个插件安装在$GOBIN目录下,确保protoc-gen-go能被protoc找到就行了。

2.使用proto

定义proto

定义一个Holo.proto【名字是啥,生成的pb就是啥名字】文件:

syntax = "proto3";

//c++使用package,生成的pb.h文件的namespace
package H.O.L.O;

//go使用go_package,必须得指定,否则无法生成pb
//go_package结构:[生成pb的路径]/包名字
//最终生成的pb所在路径为:go_out_path + [生成pb的路径]
option go_package = "./mypb/package_name"; 
  
message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

生成pb

# 需要注意:--go_out=<PATH>,这个path必须是已经存在的,否则会报错.
protoc --proto_path=./ --go_out=./build-pb Holo.proto

此时生成的pb文件

ubuntu@Holo-wo:~/code/demo/proto_demo$ tree ./
./
├── Holo.proto
├── build-pb
│   └── mypb
│       └── Hello
│           └── Holo.pb.go
└── makefile

API使用⭐

pb的go接口,需要使用google.golang.org/protobuf/proto包进行一些操作,具体可以查看: proto package - google.golang.org/protobuf/proto - Go Packages

编译程序

比起cpp,编译go简直不要太简单😃

3.FAQ