Go 使用protobuf
来源:互联网 发布:淘宝怎么找不到高仿表 编辑:程序博客网 时间:2024/06/09 14:51
一、安装工作:
1、安装proto,在Windows上直接下载release版本(编译好的),protoc-3.3.0-win32.zip:
https://github.com/google/protobuf/releases/tag/v3.3.0
2、go版本的protobuf的下载地址:
https://github.com/golang/protobuf
3、将这个protobuf-master.zip加压后,改名为protobuf目录,并且在当前go工程的src目录下,新建一个子目录 github.com ,然后进入,再新建一个子目录golang
4、然后把刚才改名为protobuf的目录,全部拷贝到刚才的golang文件夹里面 ok!
5、在linux平台下,进入此protobuf文件夹,make 就OK了,会生成protoc可执行文件在gobin文件里里面,并且生成相关的.a文件在当前go工程的pkg文件夹里。
6、在windows平台下,我使用的是LiteIDE工具,先在proto文件夹上右键点击go install , 然后在protoc-gen-go文件夹上右键点击go install。在当前go工程的bin文件夹下会生成protoc-gen-go可执行文件。
7、进入自定义的.proto文件所在的文件夹,输入命令 protoc –go_out=./ .proto,则在当前文件夹下生成.go文件。
二、使用规则:
1、在使用之前,我们先了解一下每个 Protobuf 消息在 Golang 中有哪一些可用的接口:
2、每一个 Protobuf 消息对应一个 Golang 结构体
3、消息中域名字为 camel_case 在对应的 Golang 结构体中为 CamelCase
4、消息对应的 Golang 结构体中不存在 setter 方法,只需要直接对结构体赋值即可,赋值时可能使用到一些辅助函数,例如:
msg.Foo = proto.String(“hello”)
5、消息对应的 Golang 结构体中存在 getter 方法,用于返回域的值,如果域未设置值,则返回一个默认值
6、消息中非 repeated 的域都被实现为一个指针,指针为 nil 时表示域未设置
7、消息中 repeated 的域被实现为 slice
访问枚举值时,使用“枚举类型名_枚举名”的格式(更多内容可以直接阅读生成的源码)
8、使用 proto.Marshal 函数进行编码,使用 proto.Unmarshal 函数进行解码
- Go 使用protobuf
- Go语言中使用 protobuf
- 如何在Go中使用Protobuf
- go语言学习-------Go语言中使用 protobuf
- Go实战--go中使用google/protobuf(The way to go)
- go语言使用protobuf与c++做数据通信。
- GO-数据类型protobuf-go-mysql
- go 安装 protobuf proto3
- Go实战--golang中使用gRPC和Protobuf实现高性能api(golang/protobuf、google.golang.org/grpc)
- go的protobuf环境搭建
- protobuf使用
- protobuf 使用
- protobuf使用
- protobuf使用
- 使用protoBuf
- 【protobuf】protobuf ubuntu python3使用
- 在go环境中架设protobuf
- 【Google Protobuf】protobuf的使用(二)
- 初学素数筛选打表法
- 方法——猜字母小游戏
- java学习内容
- openwrt中boot_hook函数的一些说明
- UVA10891[Game of Sum] 动态规划
- Go 使用protobuf
- GYM 100488 Two Pirates(想法)
- 面试题---day02
- 牛客 题库 memcpy memmove memset strcpy
- 多条目加载,HttpURLConnection,get模型
- 新XListView连接网络请求数据
- matlab2c使用c++实现matlab函数系列教程-randint函数
- 除了alert,其他提示
- js中数组方法push()、shift()与pop()、unshift()的区别