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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值