内容简介:下载安装protobuf-3.1.0版本, 把 F:\Program Files\protoc-3.3.0-win32\bin\protoc.exe 文件路径添加到环境变量中。查看是否安装成功,在命令行输入: proto --version安装成功之后,就可以按照protobuf的规则编码和解码任何我们想要传输的数据了。
1.安装protobuf3版本
下载安装protobuf-3.1.0版本, 把 F:\Program Files\protoc-3.3.0-win32\bin\protoc.exe 文件路径添加到环境变量中。
查看是否安装成功,在命令行输入: proto --version
安装成功之后,就可以按照protobuf的规则编码和解码任何我们想要传输的数据了。
比起xml和json形式的数据传输,protobuf拥有更高的数据压缩比和压缩效率。
2.写test.proto文件
相当于给一个对象添加相应的属性。
//指定版本 //注意proto3与proto2的写法有些不同 syntax = "proto3"; //包名,通过protoc生成时 go 文件时 package test; // 班级 message Class { int32 num = 1; repeated Student students = 2; } // 学生 message Student { string name = 1; int32 age = 2; Sex sex = 3; } //性别 enum Sex { MAN = 0; WOMAN = 1; }
3.生成文件test.pb.go文件
.proto文件写好之后,不方便我们在代码中使用,需要利用刚才安装的proto工具生成一个我们可以在代码中方便实际调用的类。
这个类生成之后就变成我们和protobuf交换数据的桥梁,我们可以看懂和使用,protobuf也可以识别和解析。
生成test.pb.go文件之后.proto就不需要了,但是为了后期更改和代码可读性继续保留该文件。
test.pb.go具体代码我就不贴出来了,命令如下: protoc --go_out=. *.proto
4.测试和验证
package main
import (
"github.com/goinaction/learning/proto3-my/test"
"github.com/gogo/protobuf/proto"
"io/ioutil"
"os"
"log"
)
func write() {
c1 := &test.Class{
Num: 1,
Students: []*test.Student{
{Name: "xiaoming", Age: 21, Sex: test.Sex_MAN},
{Name: "xiaohua", Age: 21, Sex: test.Sex_WOMAN},
{Name: "xiaojin", Age: 21, Sex: test.Sex_MAN},
},
}
// 使用protobuf工具把struct数据类型格式化成字节数组(压缩和编码)
data, _ := proto.Marshal(c1)
// 把字节数组写入到文件中
ioutil.WriteFile("test.txt", data, os.ModePerm)
}
func read() {
// 以字节数组的形式读取文件内容
data, _ := ioutil.ReadFile("test.txt")
class := new(test.Class)
// 使用protobuf工具把字节数组解码成struct(解码)
proto.Unmarshal(data, class)
log.Println(class.Num)
for _, v := range class.Students {
log.Println(v.Name, v.Age, v.Sex)
}
}
func main() {
write()
read()
}
代码输出结果:
2018/11/02 16:18:52 1 2018/11/02 16:18:52 xiaoming 21 MAN 2018/11/02 16:18:52 xiaohua 21 WOMAN 2018/11/02 16:18:52 xiaojin 21 MAN
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
写给大家看的算法书
【日】杉浦 贤 / 绝云 / 电子工业出版社 / 2016-6 / 59.00元
算法这个词对于非计算机从业人士而言,似乎就是晦涩、神秘的代名词。其实,算法在日常生活中随处可见。做饭用的菜谱是一种算法、查字典的方法是一种算法、给期中考试分数排名也用到了算法。事实上,算法可以说是这个信息爆炸的时代所依存的重要基石之一。 《写给大家看的算法书》对于理解信息处理的基础——算法而言,是一本非常优秀的入门读物。作者采用大量生动的类比,配合简洁易懂的配图,深入浅出地讲解算法,极大地拉......一起来看看 《写给大家看的算法书》 这本书的介绍吧!