Goland中Protobuf的安装、配置和使用

目录
  • 引言
  • 1、安装protobuf编译器
  • 2、下载protobuf的golang支持库,安装protoc-gen-go
  • 3、protobuf使用示例

引言

本文记录了mac环境下protobuf的编译安装,并通过一个示例来演示proto自动生成go代码。

本文使用的mac os 12.3系统,不建议使用homebrew安装,系统版本太高,会安装报错,所以自己下载新版压缩包编译构建安装。

1、安装protobuf编译器

官方github选择适合自己系统的Proto编译器程序进行下载安装

本文使用的mac os 12.3系统,不建议使用homebrew安装,系统版本太高,会报错,所以自己下载压缩包构建安装。

如需压缩包请在评论区留言。

2.在/usr/local/下新建文件夹protobuf

3.将下载文件拷贝到:/usr/local/protobuf/

4.配置环境变量:

vim ~/.bash_profile

增加:

# protobuf
export PROTOBUF=/usr/local/protobuf
export PATH=$PROTOBUF/bin:$PATH

使环境变量生效:

source ~/.bash_profile

解压:

tar zxvf protobuf-all-3.20.1.tar.gz

cd 进入 protobuf-3.20.1/目录下,在终端按顺序执行:

sudo ./configure
sudo make
sudo make check
sudo make install

执行命令:protoc --version 检查是否安装成功

2、下载protobuf的golang支持库,安装protoc-gen-go

protoc-gen-go用来将 .proto 文件转换为 Golang 代码。

在终端运行命令:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

这条命令会安装,并将protoc-gen-go可执行文件复制到$GOBIN文件夹下

注意:原来的github.com/golang/protobuf/protoc-gen-go这个库已经被弃用,我们需要使用 google.golang.org/protobuf 这个库

% go get -u github.com/golang/protobuf/protoc-gen-go
go: module github.com/golang/protobuf is deprecated: Use the "google.golang.org/protobuf" module instead.
go: added github.com/golang/protobuf v1.5.2
go: added google.golang.org/protobuf v1.28.0

3、protobuf使用示例

1、新建一个go moudle项目,创建扩展名为.proto的文件,并编写代码。比如创建idl/user.proto文件,内容如下:

syntax = "proto3";
package user;
option go_package ="./user";
message User {
  int64 user_id = 1;
  string user_name = 2;
  string password = 3;
}

2、编译.proto文件,生成Go语言文件。执行如下命令:

protoc --go_out=. ./idl/*.proto

将会自动生成对应的user目录,存放生成的user.pb.go文件:

3、在main程序中使用Protobuf生成的代码:

使用proto将user序列化输出out,在将out反序列化成user

package main
import (
   "encoding/json"
   "fmt"
   "github.com/starine/go-protoc-example/user"
   "google.golang.org/protobuf/proto"
   "log"
)
func main() {
   fmt.Println("Hello World. \n")
   user1 := user.User{}
   user1.Password = "123456"
   user1.UserName = "starine"
   bytes, _ := json.Marshal(user1)
   fmt.Println(string(bytes))
   //序列化user结构体数据
   out, err := proto.Marshal(&user1)
   if err != nil {
      log.Fatalln("Failed to encode User:", err)
   }
   fmt.Println(out)
   //反序列化user结构体
   user2 := user.User{}
   err = proto.Unmarshal(out, &user2)
   if err!=nil {
      log.Fatalln("Failed to parse User:", err)
   }
   bytes, _ = json.Marshal(user2)
   fmt.Println(string(bytes))
}

运行结果:

% go run main.go
Hello World.

{"user_name":"starine","password":"123456"}
[18 7 115 116 97 114 105 110 101 26 6 49 50 51 52 53 54]
{"user_name":"starine","password":"123456"}

Process finished with the exit code 0

到此这篇关于Goland中Protobuf的安装、配置和使用的文章就介绍到这了,更多相关Protobuf安装使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 在go语言中安装与使用protobuf的方法详解

    简介 本文主要给大家介绍了关于go语言安装使用protobuf的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. protobuf是Google开发出来的一个语言无关.平台无关的数据序列化工具,在rpc或tcp通信等很多场景都可以使用.通俗来讲,如果客户端和服务端使用的是不同的语言,那么在服务端定义一个数据结构,通过protobuf转化为字节流,再传送到客户端解码,就可以得到对应的数据结构.这就是protobuf神奇的地方.并且,它的通信效率极高,"一条消息数据,用pr

  • golang 微服务之gRPC与Protobuf的使用

    RPC是什么? 所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型.使用的时候客户端调用server端提供的接口就像是调用本地的函数一样. gRPC是什么? 与许多RPC系统一样,gRPC基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法.默认情况下,gRPC使用协议缓冲区作为接口定义语言(IDL)来描述服务接口和有效负载消息的结构. gRPC有什么好处以及在什么场景下

  • Goland中Protobuf的安装、配置和使用

    目录 引言 1.安装protobuf编译器 2.下载protobuf的golang支持库,安装protoc-gen-go 3.protobuf使用示例 引言 本文记录了mac环境下protobuf的编译安装,并通过一个示例来演示proto自动生成go代码. 本文使用的mac os 12.3系统,不建议使用homebrew安装,系统版本太高,会安装报错,所以自己下载新版压缩包编译构建安装. 1.安装protobuf编译器 在 官方github选择适合自己系统的Proto编译器程序进行下载安装 本文

  • 在Hadoop集群环境中为MySQL安装配置Sqoop的教程

    Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中. Sqoop中一大亮点就是可以通过hadoop的mapreduce把数据从关系型数据库中导入数据到HDFS. 一.安装sqoop 1.下载sqoop压缩包,并解压 压缩包分别是:sqoop-1.2.0-CDH3B4.tar.gz,hadoop-0.20.2-C

  • Debian中PostgreSQL数据库安装配置实例

    用惯了MySQL后,想尝试使用下PostgreSQL,据说这玩意儿也很强大,我在网上搜索了下相关中文书籍,可惜相关书籍远远没有MySQL那么多,不过我在官方找到了由志愿者翻译的文档(参考9.1文档翻译项目),说实话我英文文档阅读能力还是比较纠结的,所以有中文文档当然优先中文了. 在Debian下可以通过apt-get命令直接安装: 复制代码 代码如下: sudo apt-get install postgresql postgresql-client postgresql-server-dev-

  • 虚拟主机中phpMyAdmin的安装配置方法

    首先下载可以从它的官方站点 http://www.phpmyadmin.net/ 下载.站点上提供了不同的程序压缩方式供我们下载,这里我选择 bzip2 方式的来下载(因为这种文件体积小些,下其它格式的也可以). 下面我们开始对phpmyadmin进行设置. 解压后得到一个目录,进入相关目录,打开 config.inc.php 文件, 找到 $cfg['PmaAbsoluteUri'] 修改你将上传到空间的phpMyAdmin的网址 如:$cfg['PmaAbsoluteUri'] = 'htt

  • 在goland中配置gofmt的操作

    Goland是JetBrains公司推出的Go语言IDE,是一款功能强大,使用便捷的产品. 在Goland中,可以通过添加一个File Watcher来在文件发生变化的时候调用gofmt进行代码格式化, 具体方法是,点击Preferences -> Tools -> File Watchers,点加号添加一个go fmt模版,Goland中预置的go fmt模版使用的是go fmt命令,将其替换为gofmt,然后在参数中增加-l -w -s参数,启用代码简化功能. 添加配置后,保存源码时,go

  • VMware 12中CentOS 6.5 64位安装配置教程

    前言:本人在配置Hadoop的过程中,需要搭建Cent OS 64 环境,借此,顺便将Cent OS 64 的安装在此记录,方便自己,也方便大家学习.本次是在VM12虚拟机中实现Cent OS 64 的安装以及配置,后续还会有Hadoop的安装配置教程,我们先来进行第一步. 一.VMware 12 Install CentOS 64(Linux)OS create a new vm->there I screenshot my settings in the next steps-> keep

  • Windows Vista中IIS7的安装及配置ASP+Access环境的图文教程

    装上了Windows Vista,然后知道了里面带了IIS,还是7的,就想耍耍,从安装到配置感觉比Windows 2003下面的IIS6多了许多需要注意的地方. IIS7的安装 Windows Vista中IIS7是默认不安装的,所以在安装完Windows Vista之后如果需要安装IIS7的话,就要自己动手了.安装的步骤为:开始>控制面板>程序>打开或关闭Windows功能>Internet信息服务.IIS7安装时需要注意的是,如果需要ASP.ASP.NET等的支持,是需要把功能

  • CentOS7服务器中apache、php7以及mysql5.7的安装配置代码

    CentOS7服务器中apache.php7以及mysql5.7的配置代码如下所示: yum upgrade yum install net-tools 安装apache 关闭SELinux 编辑器打开 etc/selinux/config 文件,找到 SELINUX=enforcing 字段,将其改成 SELINUX=disabled ,并重启设备. yum -y install httpd mod_ssl 配置防火墙 firewall-cmd --permanent --add-port=8

  • Linux中安装配置hadoop集群详细步骤

    一. 简介 参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功.下面就把详细的安装步骤叙述一下.我所使用的环境:两台ubuntu 14.04 64位的台式机,hadoop选择2.7.1版本.(前边主要介绍单机版的配置,集群版是在单机版的基础上,主要是配置文件有所不同,后边会有详细说明) 二. 准备工作 2.1 创建用户 创建用户,并为其添加root权限,经过亲自验证下面这种方法比较好. sudo adduser hadoop sudo vim /etc/sudoers

  • 在阿里云的CentOS环境中安装配置MySQL的教程

    1 常规错误的yum安装方法: 在前文中记述了CentOS 6.5系统中通过yum方式快速地搭建了LNMP环境,那么是否也能在CentOS 7或CentOS 7.1系统中依葫芦画瓢安装MySql5.6.24呢?答案是否定的. [root@typecodes ~]# yum -y install mysql mysql-server mysql-devel ...................... ....省略部分安装过程.... ...................... Installe

随机推荐