golang使用protobuf简易教程

golang使用protobuf简易教程

google公司发布的一套开源编码规则,基于二进制流的序列化传输,可以转换成多种编程语言,几乎涵盖了市面上所有的主流编程语言,当然也包括Go

1、安装protobuf

  1. 安装下载protoc,很多种安装方法,下载地址https://github.com/google/protobuf/releases
  2. 安装下载proto的go插件,命令是go get github.com/golang/protobuf/protoc-gen-go,也可以自己手动下载安装(如果使用go get则会自动生成protoc-gen-go的可执行文件)
  3. 将protoc-gen-go可执行文件路径加到PATH环境变量中,如果是go get安装是会在GOBIN路径下生成protoc-gen-go,执行export PATH=$PATH:$GOBIN(原因在于, protoc-gen-go可执行文件需要被protoc调用)
  4. 安装goprotobuf库(注意,protoc-gen-go只是一个插件,goprotobuf的其他功能比如marshal、unmarshal等功能还需要由protobuf库提供)go get github.com/golang/protobuf/proto
  5. 写example.proto文件以及.go文件测试。由于proto生成go文件的命令是protoc --go_out=./ example.proto

PS:

1.如果你是直接go get了gin、beego这种,一般就会顺便给你安装protobuf以及protoc-gen-go了。

2.如果你有protoc-gen-go代码,放到对应目录下后($GOPATH/src/github.com/golang/protobuf/),make install也可以手动安装protoc-gen-go

二、使用protobuf

1.example.proto示例文件

(具体语法请自行搜索)

syntax = "proto2"; 
//example.proto
package example;

// LD
message LD
{
    required uint32 ip = 1;         // LD的IP
}

// 集群
message Set
{
    required uint32 id                                     = 1;     // SET的id
    required string name                                   = 2;     // SET名字
    repeated LD ld_list                                    = 3;     // LD列表
}

注意required是必须要求的字段,optional是可选字段,同时注意, id=1, 后面的数字主要是保证其顺序与唯一性。

编译命令

protoc --go_out=./ example.proto

会生成文件example.pb.go

生成的代码如下:

// Code generated by protoc-gen-go. DO NOT EDIT.
// source: example.proto

/*
Package example is a generated protocol buffer package.

It is generated from these files:
    example.proto

It has these top-level messages:
    LD
    Set
*/
package example

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值