5个步骤搞定protoc环境安装 | GO主题月

简介: [TOC]胖sir:不知道你有没有这样的疑惑,工作中发现很多新接触GO的小伙伴安装protoc的环境需要折腾很久,刚才开我装环境的时候也是花了好长时间,最后如何装好的也不知原因,网上查找了各种资源,也没有一篇文章可以很好的解决这个问题.

[TOC]

胖sir:不知道你有没有这样的疑惑,工作中发现很多新接触GO的小伙伴安装protoc的环境需要折腾很久,刚才开我装环境的时候也是花了好长时间,最后如何装好的也不知原因,网上查找了各种资源,也没有一篇文章可以很好的解决这个问题.

兵长:这个好说,今天咱们就来梳理和总结一下,如何快速高效的安装好protoc的环境

前提,先介绍一下protoc是干啥的?

简而言之,protoc是用于将proto文件编程成各种语言源码文件的工具

例如此处我们可以将proto文件通过protoc工具,编译生成适用于GO语言开发的源码文件xxx.pb.go,一般会和GRPC进行配套使用,如果对这个感兴趣,可以在后台留言哦,此处暂且先单一说明一下protoc的环境如何一次性搞定

目前看来windows上的protoc安装相对来说疑问还是比较多的,其实安装还是非常简单的,我们就来说说吧

windows 下安装go protoc

1、下载最新版的golang安装程序

github.com/protocolbuf…

image.png

2、 解压,把GOPATH的路径添加到环境变量

例如:要是不知道GOPATH在哪里获取, 可以在终端里面敲入 go env进行查看

image.png

3、命令行执行

go get github.com/golang/protobuf

若如上命令执行失败,请配置代理

go env -w GO111MODULE=on  //打开模块
go env -w GOPROXY=https://goproxy.cn,direct //启用代理

4、%GOPATH%/src/github.com/golang/protobufxxxxx/protoc-gen-go

go build
go install

执行之后,看到自己GOPATH/bin 目录下会生成如下程序,说明环境配置成功

5、开始使用protoc

目录结构为:

image.png

test.proto

syntax="proto3"; //版本号
package mypro;  //包名
enum ClassName{   //枚举
    class1=0;  //标号 必须从 0开始
    class2=1;
    class3=2;
}
message Student{ //消息,对应于Go的结构体
  string name=1; //1:标号,唯一 即可(相当于数据库中的Id,不一定要从1 ,2的顺序依次排列。)
  int32 age=2;  //必须指定整型的范围,如int32,int64
  string address=3;
  ClassName cn=4;
}
message Students{
   repeated Student person=1;  // repeated 修饰,相当于Go中切片
   string school=2;
}

执行:protoc --go_out=. *.proto  , 会生成 .pb.go文件

main.go

package main
import (
    "fmt"
    "github.com/golang/protobuf/proto"
    "mypro.com/mypro"  //引入的proto的包 , go语言中,一个目录里面的所有文件都应设置成一个包
)
func main() {
    s1 := &mypro.Student{} //第一个学生信息
    s1.Name = "jz01"
    s1.Age = 23
    s1.Address = "cq"
    s1.Cn = mypro.ClassName_class2 //枚举类型赋值
    ss := &mypro.Students{}
    ss.Person = append(ss.Person, s1) //将第一个学生信息添加到Students对应的切片中
    
    s2 := &mypro.Student{}            //第二个学生信息
    s2.Name = "jz02"
    s2.Age = 25
    s2.Address = "cd"
    s2.Cn = mypro.ClassName_class3
    ss.Person = append(ss.Person, s2) //将第二个学生信息添加到Students对应的切片中
    ss.School = "cqu"
    
    fmt.Println("Students信息为:", ss)
    // Marshal takes a protocol buffer message
    // and encodes it into the wire format, returning the data.
    buffer, _ := proto.Marshal(ss)
    fmt.Println("序列化之后的信息为:", buffer)
    //  Use UnmarshalMerge to preserve and append to existing data.
    data := &mypro.Students{}
    proto.Unmarshal(buffer, data)
    fmt.Println("反序列化之后的信息为:", data)
}

在main.go的同级目录 执行 go mod init xxx , 模块化 如:go mod init mypro.com

在main.go 同级目录 执行 go build , 若执行成功,则正确解析protobuf

当需要使用到grpc + protobuf的时候,protoc工具编译proto文件时,需要加上grpc插件,具体的使用方式,感兴趣的可以后台私信小魔童哪吒哦

以上为本期全部内容,如有疑问可以在评论区或后台提出你的疑问,我们一起交流,一起成长。

好家伙要是文章对你还有点作用的话,请帮忙点个关注,分享到你的朋友圈,分享技术,分享快乐

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~


相关文章
|
9天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
38 5
|
9天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
24 4
|
10天前
|
SQL 关系型数据库 MySQL
go语言中安装数据库驱动
【11月更文挑战第1天】
30 5
|
5月前
|
Go
go-micro 安装
go-micro 安装
40 3
|
1月前
|
Unix Linux Go
Linux 使用Yum安装Go和配置环境
Linux 使用Yum安装Go和配置环境
|
3月前
|
Ubuntu Go 开发工具
Unbuntu 一键安装制定版本的Go环境
该文章提供了在Ubuntu系统上一键安装指定版本的Go语言环境的详细步骤,包括删除旧版本Go、下载并解压新版本Go到指定目录、配置Go环境变量,以及安装其他必要的开发工具。
63 2
|
3月前
|
安全 Java Go
探索Go语言在高并发环境中的优势
在当今的技术环境中,高并发处理能力成为评估编程语言性能的关键因素之一。Go语言(Golang),作为Google开发的一种编程语言,以其独特的并发处理模型和高效的性能赢得了广泛关注。本文将深入探讨Go语言在高并发环境中的优势,尤其是其goroutine和channel机制如何简化并发编程,提升系统的响应速度和稳定性。通过具体的案例分析和性能对比,本文揭示了Go语言在实际应用中的高效性,并为开发者在选择合适技术栈时提供参考。
|
3月前
|
存储 Ubuntu Go
在Ubuntu 16.04上安装Go 1.6的方法
在Ubuntu 16.04上安装Go 1.6的方法
47 1
|
3月前
|
存储 Ubuntu Go
在Ubuntu 18.04上安装Go的方法
在Ubuntu 18.04上安装Go的方法
52 1
|
3月前
|
存储 Ubuntu Linux
在Ubuntu 14.04上安装Go 1.6的方法
在Ubuntu 14.04上安装Go 1.6的方法
53 1