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

>  cd  github.com/golang/protobuf/protoc-gen-go

>  go  build

>  go  install

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

三、编写.proto文件

 protobuf3的语法可参考:

 https://blog.csdn.net/u011518120/article/details/54604615#DefiningAMessageType

//指定proto3版本,默认是proto2

syntax = "proto3";

 

//指定包名

package  testone;

 

//定义服务接口

service TestProto {

    rpc SayHello (TestRequest) returns (TestResponse) {}

}

 

//定义类型

message TestRequest {

    string name = 1;

    int32  age  = 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"

)

 

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

猜你喜欢

转载自blog.csdn.net/skh2015java/article/details/80865731
今日推荐