sudo vi /etc/profile
加到文件底部

export PATH=$PATH:$GOBIN:/usr/local/go/bin

export GOPATH=/Users/jinfuzhang/go

export GOBIN=/Users/jinfuzhang/go/bin

export GO111MODULE=on

export GOPROXY=https://goproxy.io

按esc键,输入

:wq!

控制台执行

source /etc/profile

然后执行

brew install protobuf
go install github.com/golang/protobuf/{proto,protoc-gen-go}
go install github.com/micro/protoc-gen-micro

会根据GOPATH路径安装到下面的bin文件夹

使用

  1. 创建 Demo golang工程

     
    Paste_Image.png
  2. 在 example 包中编写 person.proto

    syntax = "proto3";
    package example; message person { // aa 会生成 Aa 命名的结构体
    int32 id = 1;
    string name = 2;
    } message all_person { // aa_bb 会生成 AaBb 的驼峰命名的结构体
    repeated person Per = 1;
    }
  3. 进入 Demo 工程的 example 目录,使用 protoc 编译 person.proto

$ protoc --go_out=. person.proto
就会生成 person.pb.go 文件

  1. 在 golang 工程中使用 protobuf 进行序列化与反序列化
    main.go:

    package main
    
    import (
    "github.com/golang/protobuf/proto"
    "Demo/example"
    "log"
    ) func main() {
    // 为 AllPerson 填充数据
    p1 := example.Person{
    Id:*proto.Int32(1),
    Name:*proto.String("xieyanke"),
    } p2 := example.Person{
    Id:2,
    Name:"gopher",
    } all_p := example.AllPerson{
    Per:[]*example.Person{&p1, &p2},
    } // 对数据进行序列化
    data, err := proto.Marshal(&all_p)
    if err != nil {
    log.Fatalln("Mashal data error:", err)
    } // 对已经序列化的数据进行反序列化
    var target example.AllPerson
    err = proto.Unmarshal(data, &target)
    if err != nil{
    log.Fatalln("UnMashal data error:", err)
    } println(target.Per[0].Name) // 打印第一个 person Name 的值进行反序列化验证
    }
 
 
 

mac下protobuf配置记录的更多相关文章

  1. Mac下 如何配置虚拟机软件Parallel Desktop--超详细

    Mac下 如何配置虚拟机软件Pparallel Desktop--超详细 Mac 的双系统解决方案有两种,一种是使用Boot Camp分区安装独立的Windows,一种是通过安装Parallels D ...

  2. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

  3. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)(转)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

  4. Mac 下VIM配置

    Mac下VIM配置 首先,我们去这里下载MacVim,也可用这个网址:(http://code.google.com/p/macvim/),进入后的界面如下: ____________________ ...

  5. Mac下iTerm2配置lrzsz功能

    Mac下iTerm2配置lrzsz功能 rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具. 优点就是不用再开一个sftp工具登录上去上传下载文件. 近期在mac上通 ...

  6. Mac下tomcat配置ssl

    最近在搞单点登录CAS,第一步就是需要给tomcat配置证书.但是,第一次配置就遇到了个问题排插了一下午.下面来存一份文档,以备以后遇到. 一.首先准备好环境 java环境:配置好环境变量,找到jdk ...

  7. 2016年最新mac下vscode配置golang开发环境支持debug

    网上目前还找不到完整的mac下golang环境配置支持,本人配置成功,现在整理分享出来. mac最好装下xcode,好像有依赖关系安装Homebrew打开终端窗口, 粘贴脚本执行/usr/bin/ru ...

  8. Mac下如何配置环境变量

    以前都是在Windows平台上开发,在配置一些框架的时候,为了能够在命令行中调用,一般都会配置bin目录到环境变量中,这是为了让命令行在执行的时候,能够查找到对应的执行文件. 现在工作使用Mac,配置 ...

  9. windows和mac下分别配置虚拟主机

    windows下配置 1.找到apache的配置文件,httpd.conf 2.找到 LoadModule rewrite_module modules/mod_rewrite.so 去掉前边的# 3 ...

随机推荐

  1. 看了这篇你就会手写RPC框架了

    一.学习本文你能学到什么? RPC的概念及运作流程 RPC协议及RPC框架的概念 Netty的基本使用 Java序列化及反序列化技术 Zookeeper的基本使用(注册中心) 自定义注解实现特殊业务逻 ...

  2. 《吊打面试官》系列-Redis基础知识

    前言Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联网公司面一次拿一次offer的面霸(请允许我使用一下 ...

  3. pandas之数值计算与统计

    数值计算与统计 对于DataFrame来说,求和.最大.最小.平均等统计方法,默认是按列进行统计,即axis = 0,如果添加参数axis = 1则会按照行进行统计. 如果存在空值,在统计时默认会忽略 ...

  4. 让表单input等文本框为只读不可编辑的方法-转

    有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使<input type="text" name="input1" value=&qu ...

  5. scrapyd 部署

    步骤 1 pip install scrapyd pip install scrapy-client 步骤 2 修改 scrapy.cfg [deploy:targetName]url = http: ...

  6. Django开发之ORM批量操作

    版本 1 Python 3.8.2 2 Django 3.0.6 批量入库 场景: 前端页面通过 textarea 文本框提交一列多行数据到Django后台,后台通过ORM做入库操作 表名: Tabl ...

  7. Fortify Audit Workbench 笔记 Password Management: Password in Configuration File(明文存储密码)

    Password Management: Password in Configuration File(明文存储密码) Abstract 在配置文件中存储明文密码,可能会危及系统安全. Explana ...

  8. SpringBoot环境下使用测试类注入Mapper接口报错解决

    当我们在进行开发中难免会要用到测试类,而且测试类要注入Mapper接口,如果测试运行的时候包空指针异常,看看测试类上面的注解是否用对! 正常测试我们需要用到的注解有这些: @SpringBootTes ...

  9. Maven中出现Could not find artifact ...:pom:0.0.1-SNAPSHOT

    参考链接:https://blog.csdn.net/zpwggi123/article/details/87189959 多模块项目构建时,先将总项目install,之后子项目分别install,注 ...

  10. pandas_使用属性接口实现高级功能

    C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx 这个文档自己创建就可以,以下几篇文章仅作为参考 import pandas as pd import copy ...