1、protobuf配置

(1)https://github.com/protocolbuffers/protobuf/releases

(2)选择适合的版本:protoc-3.8.0-win64.zip

(3)解压后将文件 protoc.exe 所在目录添加到环境变量 Path

(4)检查protobuf版本,CMD命令窗口执行:protoc --version

2、proto文件处理

(1)获取相关库

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

(2)编写test.proto文件

//指定版本
syntax = "proto3";
//包名
package pb;
//课程
message Course{
int32 id = 1;
string name = 2;
}
//学生
message Student{
int32 id = 1;
string name = 2;
repeated Course courses = 3;
}

(3)生成文件命令:protoc --go_out=. test.proto

命令执行完,会在test.proto同级目录下生成test.pb.go文件

3、使用

package main

import (
"fmt"
"log"
"test/protobuf/pb" "github.com/golang/protobuf/proto"
) func main() {
course1 := pb.Course{
Id: *proto.Int32(1),
Name: *proto.String("Golang"),
}
course2 := pb.Course{
Id: *proto.Int32(2),
Name: *proto.String("Python3"),
}
stu := pb.Student{
Id: *proto.Int32(1),
Name: *proto.String("笃志弘毅"),
Courses: []*pb.Course{&course1, &course2},
}
//序列化
data, err := proto.Marshal(&stu)
if err != nil {
log.Fatalln("proto.Marshal err:", err)
}
fmt.Println(data)
//反序列化
var stuNew pb.Student
err = proto.Unmarshal(data, &stuNew)
if err != nil {
log.Fatalln("proto.Unmarshal err:", err)
}
fmt.Println(stuNew)
} // 输出
// [8 1 18 12 231 172 131 229 191 151 229 188 152 230 175 133 26 10 8 1 18 6 71 111 108 97 110 103 26 11 8 2 18 7 80 121 116 104 111 110 51]
// {1 笃志弘毅 [id:1 name:"Golang" id:2 name:"Python3" ] {} [] 0}

golang——win10环境protobuf的使用的更多相关文章

  1. win10 环境 gitbash 显示中文乱码问题处理

    gitbash 是 windows 环境下非常好用的命令行终端,可以模拟一下linux下的命令如ls / mkdir 等等,如果使用过程中遇到中文显示不完整或乱码的情况,多半是因为编码问题导致的,修改 ...

  2. win10环境下ue4使用游戏手柄输入

    忙里偷闲,趁着源码编译需要好久的时间,把这篇博客补上,来说说怎么在win10环境中,ue4使用游戏手柄输入,也就是gamepad输入. 1.我用的手柄是rapoo v10 这款手柄,连接无线USB之后 ...

  3. PyCharm/IntelliJ IDEA Golang开发环境搭建(最方便快捷的GO语言开发环境)

    IntelliJ太牛了.为了配置Go语言开发环境,折腾了半天,下IDE(Sublime Text,IntelliJ Idea),然后装Go插件.装Go插件还要下载插件项目源码,编译等等,Sublime ...

  4. win10环境下使用苹果虚拟机不要开多线程应用下载文件

    win10环境下使用苹果虚拟机开多线程应用下载文件时候卡死,网络老掉. 8GB内存不够用?2.5mb网速不够用? 开的百度网盘下载个电影 结果虚拟机卡的不行 关了 网盘 挂起虚拟机 然后再 继续运行客 ...

  5. Windows下visual studio code搭建golang开发环境

    Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...

  6. win10环境下如何运行debug

    在学习汇编的时候,会需要用到debug调试程序,但是现在win10默认已经移除了这个插件,我们需要手动安装,下面就告诉大家如何在win10环境下安装debug. 1:准备工具 1.1 DOSBox 1 ...

  7. 在win10环境下搭建 solr 开发环境

    在win10环境下搭建 solr 开发环境 2017年05月30日 09:19:32 SegaChen0130 阅读数:1050   在win10环境下搭建 solr 开发环境 安装环境  Windo ...

  8. linux golang开发环境配置(离线方式)

    <获取开发工具>     到https://www.golangtc.com/download 下载安装包, 根据自己的系统选择合适的开发包,这里选择go.1.9.2.linux-amd6 ...

  9. win10环境下安装Ubantu双系统(超详解)

    win10环境下安装Ubantu双系统 1.准备工作: 先去ubantu官网(https://www.ubuntu.com/download)去下载ubantu镜像.根据自己的实际情况选择32位的或者 ...

随机推荐

  1. CQRS+Event Sourcing

    using System; using System.Collections.Generic; using System.Linq; namespace CQRS { public class Eve ...

  2. Chapter Zero 0.1.1 计算机硬件五大单元

    计算机硬件的五大单元 先从CPU说起,CPU的全称如下: 中央处理器(Central Processing Unit,CPU) CPU作为一个特定功能的芯片,内含微指令集, 主机的功能差异,主要参考C ...

  3. K8S(06)web管理方式-dashboard

    K8S的web管理方式-dashboard 目录 K8S的web管理方式-dashboard 1 部署dashboard 1.1 获取dashboard镜像 1.1.1 获取1.8.3版本的dsash ...

  4. 容器技术学习系列(一)-Docker基础知识学习

    一.概述 1.Docker是什么? 1)Docker是世界领先的软件容器化平台 2)Docker公司开发,开源,托管在github 3)跨平台,支持Windows.MacOS.Linux 2.Dock ...

  5. VMware虚拟化与Kubernetes(K8s)类比阐述-适合VMware用户

    概述 容器技术是最近几年非常热门的技术,它似乎就是为云端的应用量身定制的,所以它也被贴上了云原生应用 (Cloud Native Application) 技术的标签.目前最为流行的容器管理调度平台是 ...

  6. Java之先行发生原则与volatile关键字详解

    volatile关键字可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确.完整地理解,以至于许多程序员都习惯不去使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchro ...

  7. postion:fixed和margin:0 auto的使用

    很多同学将顶部菜单固定,使用postion:fixed,然后使用margin:0 auto进行居中,发现margin:0 auto并不起作用. 通常,我们要让某元素居中,会这样做: #element{ ...

  8. hardsource bug

    hardsource bug webpack crashed bug memory stackoverflow [hardsource:32210703] Could not freeze refs ...

  9. Swift 5.3

    Swift 5.3 https://swift.org/blog/ refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  10. js 最简单的发布订阅模式

    let _subscriber: any; function autorun(subscriber: Function) { _subscriber = subscriber; _subscriber ...