1、下载protobuf的编译器protoc

地址:

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加入环境变量。

如果喜欢编译安装的,也可下载源码自行安装,最后将可执行文件加入环境变量。

2、获取protobuf的编译器插件protoc-gen-go

进入GOPATH目录

运行

go get -u github.com/golang/protobuf/protoc-gen-go

如果成功,会在GOPATH/bin下生成protoc-gen-go.exe文件

3、创建一个test.proto文件

//指定版本//注意proto3与proto2的写法有些不同

syntax = "proto3";//包名,通过protoc生成时go文件时

package test;//手机类型//枚举类型第一个字段必须为0

enumPhoneType {

HOME= 0;

WORK= 1;

}//手机

message Phone {

PhoneType type= 1;string number = 2;

}//人

message Person {//后面的数字表示标识号

int32 id = 1;string name = 2;//repeated表示可重复//可以有多个手机

repeated Phone phones = 3;

}//联系簿

message ContactBook {

repeated Person persons= 1;

}

4、运行如下命令

> protoc --go_out=. *.proto

会生成一个test.pb.go的文件,具体的文件内容我就不截图了。

5、在go语言中使用protobuf

package main;

import ("github.com/golang/protobuf/proto"

"protobuf/test"

"io/ioutil"

"os"

"fmt")

func write() {

p1 := &test.Person{

Id:1,

Name:"小张",

Phones: []*test.Phone{

{test.PhoneType_HOME,"111111111"},

{test.PhoneType_WORK,"222222222"},

},

};

p2 := &test.Person{

Id:2,

Name:"小王",

Phones: []*test.Phone{

{test.PhoneType_HOME,"333333333"},

{test.PhoneType_WORK,"444444444"},

},

};//创建地址簿

book := &test.ContactBook{};

book.Persons=append(book.Persons, p1);

book.Persons=append(book.Persons, p2);//编码数据

data, _ :=proto.Marshal(book);//把数据写入文件

ioutil.WriteFile("./test.txt", data, os.ModePerm);

}

func read() {//读取文件数据

data, _ := ioutil.ReadFile("./test.txt");

book := &test.ContactBook{};//解码数据

proto.Unmarshal(data, book);for _, v :=range book.Persons {

fmt.Println(v.Id, v.Name);for _, vv :=range v.Phones {

fmt.Println(vv.Type, vv.Number);

}

}

}

func main() {

write();

read();

}

go语音protobuf_golang 使用 protobuf 的教程相关推荐

  1. 【可救砖】CM211-1/201-1等S905L3(B)_安卓9-通刷极致精简免拆语音-线刷固件及教程202208

    [语音版]CM211-1/201-1等S905L3(B)_安卓9-通刷极致精简免拆语音-线刷固件及教程!本固件为安卓9.0版本的线刷刷机包,可救砖!理论上可通刷680LC,M304A,M302A,IP ...

  2. 我的世界服务器怎么用系统说话,我的世界语音聊天Mod安装使用教程_我的世界语音聊天Mod怎么安装使用_玩游戏网...

    <我的世界>语音聊天mod给游戏增加了语音功能,让联机的玩家可以直接用语音聊天,服务器也可以用此mod让玩家交流更方便,这里给大家带来<我的世界>语音聊天Mod安装使用教程,感 ...

  3. mc服务器语音,《我的世界》语音聊天Mod安装使用教程

    原标题:<我的世界>语音聊天Mod安装使用教程 <我的世界>语音聊天mod给游戏增加了语音功能,让联机的玩家可以直接用语音聊天,服务器也可以用此mod让玩家交流更方便,这里给大 ...

  4. 语音(识别)处理教程

    视频类 [人工智能]Speech Recognition 语音识别 篇 (附源码) 李宏毅主页的语音处理视频–youtube里面可以看 台湾大学李琳山–数位语音处理概论 汇总/博客 [语音识别]从入门 ...

  5. 微信语音怎么转发详细转发教程详解

    熟悉微信功能 ,了解微信群的人都知道在微信群讲课最大的问题就在于语音不能被转发到其他微信群,这就导致即使一个平台建了许多微信群,并邀请了一位重量级嘉宾来做分享,嘉宾的语音也只能在一个群里分享,最多只能 ...

  6. golang 使用 protobuf 的教程

    1.下载protobuf的编译器protoc 地址: https://github.com/google/protobuf/releases window:     下载: protoc-3.3.0- ...

  7. protobuf入门教程(六):导入定义(import)

    消息格式 info.proto文件内容如下: syntax = "proto3";//指定版本信息,不指定会报错package infopack; //package声明符mess ...

  8. protobuf入门教程(三):常用序列化/反序列化接口

    C数组的序列化和反序列化 #include "addressbook.pb.h" #include <iostream> using namespace std;/* ...

  9. protobuf入门教程(二):消息类型

    操作流程 1)在.proto文件中定义消息格式  2)使用protobuf编译器生成C++类  3)使用C++ API来读写消息 C++编程指导:https://developers.google.c ...

最新文章

  1. maven 一个模块生成多个jar包
  2. java.exe闪退_tomcat7.exe闪退 解决点击startup.bat后闪退的情况 - 电脑常识 - 服务器之家...
  3. 人工神经网络之BP神经网络模型
  4. 使用Null Object设计模式[转]
  5. HTTP协议中常见请求方法以及一些常见错误代码
  6. 怎样才能去掉图片锁定纵横比_1分钟批量统一Word中300张图片的大小!无需插件、代码,超级简单...
  7. BZOJ1031: [JSOI2007]字符加密Cipher
  8. 学成在线--6.CMS页面管理开发(删除页面)
  9. CMake指令入门 ——以构建OpenCV项目为例
  10. 【Python3网络爬虫开发实战】1.5.1-PyMySQL的安装
  11. 表单中enctype=multipart/form-data的意思
  12. pe卸载win10更新补丁_新图标+新功能!win10凌晨更新补丁
  13. 推理集 —— 举一反三
  14. 图片相似度识别在线_玩转腾讯词向量:词语相似度计算和在线查询
  15. 阿里云助贫困大学生用技能点亮人生
  16. vue.js视频教程,vue.js视频教程下载
  17. matlab进行动力吸振器设计,动力吸振器详解.doc
  18. Python批量自定义文件夹图标
  19. movs 数据传送指令_Introduction to CSAPP(十二):数据传送指令与 C 语言赋值
  20. 文件包含漏洞防范措施

热门文章

  1. 使用WebCrypto API的电子签名
  2. 如何在Java中实现线程池
  3. 实现Java监视的12个步骤程序存在缺陷
  4. antlr 教程_ANTLR教程– Hello Word
  5. WildFly 9 –别希望您的控制台像这样!
  6. 如何分析线程转储– IBM VM
  7. 带有GSON和抽象类的JSON
  8. 超越JUnit –测试框架的替代方案
  9. php 崩溃 输出,php – 创建可崩溃的print_r()var_dump()的函数?
  10. Linux 中常见的较为复杂的命令实例