Go安装使用protobuf

一、简介
protocol buffers 是 Google 开源的一套成熟的结构数据序列化机制

二、安装
Go语言源码地址:https://github.com/golang/protobuf

1. 安装编译器protoc

下载地址:https://github.com/google/protobuf/releases

window:
下载: protoc-3.3.0-win32.zip
解压,把bin目录下的protoc.exe复制到GOPATH/bin下,GOPATH/bin加入环境变量。
当然也可放在其他目录,需加入环境变量,能让系统找到protoc.exe
linux:
下载:protoc-3.3.0-linux-x86_64.zip 或 protoc-3.3.0-linux-x86_32.zip
解压,把bin目录下的protoc复制到GOPATH/bin下,GOPATH/bin加入环境变量。
如果喜欢编译安装的,也可下载源码自行安装,最后将可执行文件加入环境变量。

检验是否安装成功:protoc --version或 protoc --help(使用说明)

2. 安装编译器插件protoc-gen-go (protoc-gen-go用于生成Go语言代码)
进入GOPATH目录,并运行
>go get -u github.com/golang/protobuf/protoc-gen-go
>cdgithub.com/golang/protobuf/protoc-gen-go
>gobuild
>goinstall

$GOPATH/bin中会生成protoc-gen-go.exe



三、编写.proto文件
protobuf3的语法可参考:
https://blog.csdn.net/u011518120/article/details/54604615#DefiningAMessageType

//指定proto3版本,默认是proto2
syntax = "proto3";

//指定包名
packagetestone;

//定义服务接口
service TestProto {
rpc SayHello (TestRequest) returns (TestResponse) {}
}

//定义类型
message TestRequest {
string name = 1;
int32age= 2;
}

message TestResponse {
string message = 1;
}
四、生成Go语言代码
指令介绍
> protoc--go_out=output_directory[-I=IMPORT_PATH]input_directory/file.proto
参数:
output_directory:指定生成file.proto.go文件的目录 (.是当前目录)
-I参数:可选,如果多个proto文件之间有互相依赖,生成某个proto文件时,需要import其他几个proto文件,这时候就要用-I来指定搜索目录
input_directory/file.proto :指定.proto文件

生成go文件
> protoc --go_out=.helloword.proto
会生成一个helloword.pb.go文件

五、在Go语言中使用
import (
"fmt"
"grpc_study/testone/testone"
"github.com/gogo/protobuf/proto"
【Go安装使用protobuf】)

func main() {
req := &testone.TestRequest{
Name:"Tome",
Age:20,
}
//编码数据
byts,err := proto.Marshal(req)
if err != nil {
return
}

req1 := &testone.TestRequest{}
//解码
proto.Unmarshal(byts,req1)
fmt.Println(req1)
}

结果:name:"Tome" age:20


参考地址:https://www.cnblogs.com/jkko123/p/7161843.html

    推荐阅读