TH小破站

  • 首页
  • 容器
    • 认识Docker
    • DockerFile详解
  • k8s
    • 认识Kubernetes
    • Kubernetes部署--(kubeadm方式)
    • kubeasz部署k8s集群
    • Ansible-binary部署k8s集群-1.31.2
  • Ceph
    • 认识分布式存储
    • CPEH部署
  • CI/CD
    • DevOps认识
    • 部署--Gitlab
  • ELK
    • ELK简介
    • Elasticsearch
    • Kibana部署
    • Logstash
    • ELK--收集 tomcat 日志(实战)
  • HD
    • 认识--大数据
    • Hadoop-单机部署
    • Hadoop-伪分布部署
    • Hadoop-完全分布部署
    • Hadoop-(HA)完全分布部署
    • Ambari自动部署--Hadoop
  • Nginx
    • Nginx功能介绍
    • Nginx安全选项
    • Nginx配置文件简单介绍
    • 网站服务器部署
  • 监控
    • ZABBIX-部署(yum)
    • ZABBIX-编译安装
  • 云计算
    • KVM 概述
    • OpenStack企业级部署(T版)
    • OpenStack之dashboard部署
    • OpenStack-controller的高可用
    • openstack(Caracal版_ubuntu版本)部署
  • 数据库
    • mariadb与mysql
    • mysql主从
    • MySQL--冷备(实战)
    • MySQL--热备(dump表)
    • MySQL--热备(dump库)
    • 数据恢复实战案例
    • Xtrabackup实现MySql8.x全量备份
    • MyCat实现数据库读写分离
    • MHA实现数据库高可用
    • Percona XtraDB(PXC)实现数据库集群高可用
    • 数据库压力测试
    • PostgreSQL 基操
    • PostgreSQL备份恢复
    • PostgreSQL高可用
    • MongDB安装配置基础使用
    • MongoDB实现复制集
    • MongoDB备份还原
  • 自动化
    • ssh远程服务原理及配置
    • Ansible剧本文件应用
    • Ansible管理服务介绍
    • Ansible自动化部署node_exporter(包含升级,回滚)
    • Saltstack-部署安装
  • 脚本
    • 一键查看服务器资源利用率
    • 一键生成SSL证书
    • 保存指定数量的文件/目录
    • 初始化服务器
    • 扫描可用IP
    • 批量分发SSH密钥
    • 监控多主机磁盘脚本
    • 一键安装MySQL8.x脚本
    • Python脚本监控ES集群
    • 资源巡检脚本
    • 查看各用户使用的cpu占比
热衷于分享
架构师成长之路 !!!
  1. 首页
  2. 开发
  3. 正文

go protobuf 安装简单使用

2025年3月13日 1032点热度 2人点赞 0条评论

go_protobuf安装使用下载

下载地址:https://github.com/protocolbuffers/protobuf/releases

匹配环境变量

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

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

并且把插件的exe文件也放到go的bin目录。实际上我的插件文件被下载到了windows用户目录下的个人电脑名称目录下的go文件夹

 C:\Users\TH\go\bin

案例演示

 syntax = "proto3";
 ​
 package hello;
 option go_package="protobuf-test/pb";
 ​
 // struct HelloRequest {
 // value string
 // }
 ​
 /*
 sdfsf
 */
 ​
 // message --> 多语言
 message HelloRequest {
   // 类型是string, 字段的名称 value, 字段的编号: 1
   string value = 1;
   // 类型是string, 字段的名称 value, 字段的编号: 1
   string value2 = 2;
 }
 ​
 enum STATUS {
   DRAFT = 0;
   PUBLISHED = 1;
 }
 ​
 message BlogSet {
   int64 total = 1;
   // repeated Blog Blog的数组
   repeated Blog items = 2;
 }
 ​
 message Blog {
   // id --> Id
   int64 id = 1;
   // 内容
   string content = 2;
   // 博客标签
   map<string,string> lables = 3;
 }
 ​
 ​
 message AlertEvent {
   string name = 1;
 }
 ​
 message OperateEvent {
   string name = 1;
 }
 ​
 message Event {
   oneof data {
     AlertEvent alert = 1;
     OperateEvent operate = 2;
   }
 }

终端执行命令

 PS F:\gocode\test\protobuf> protoc -I=pb --go_out=. --go_opt=module="protobuf-test" pb/hello.proto

参数解析:

  1. protoc

    • 这是 Protocol Buffers 编译器,用于将 .proto 文件编译成目标语言代码(这里是 Go)。

  2. -I=pb(等同于 --proto_path=pb)

    • -I 指定 proto 文件的搜索路径,即 pb/ 目录。

    • 这表示 hello.proto 文件相对于 pb/ 目录查找,编译器会在 pb/ 目录中解析 import 的 .proto 文件。

  3. --go_out=.

    • 生成 Go 代码 并输出到当前目录 .。

    • --go_out 是 protoc-gen-go 插件的选项,告诉 protoc 生成 Go 代码。

  4. --go_opt=module="protobuf-test"

  5. pb/hello.proto

    • 这是要编译的 .proto 文件,路径相对于当前目录。


假设你的项目结构如下:

project/
 ├── pb/
 │   ├── hello.proto
 └── main.go

在 project/ 目录下运行:

 protoc -I=pb --go_out=. --go_opt=module=protobuf-test pb/hello.proto

会在 project/ 目录下生成:

project/
 ├── pb/
 │   ├── hello.proto
 │   ├── hello.pb.go  # 生成的 Go 代码

测试用例

 package pb_test
 ​
 import (
     "google.golang.org/protobuf/proto"
     "protobuf-test/pb"
     "testing"
 )
 ​
 func TestHelloRequest(t *testing.T) {
     ins := &pb.HelloRequest{Value: "Stangj"}
     t.Log(ins)
     data, err := proto.Marshal(ins)
     if err != nil {
         t.Fatal(err)
     }
     t.Log(data)
 ​
     ins2 := &pb.HelloRequest{}
     err = proto.Unmarshal(data, ins2)
     if err != nil {
         t.Fatal(err)
     }
     t.Log(ins2)
 }
 ​
 func TestEvent(t *testing.T) {
     ins := &pb.Event{Data: &pb.Event_Operate{}}
     t.Log(ins)
 ​
     ins.GetOperate()
 }

标签: 暂无
最后更新:2025年3月13日

tanghao946

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • go_protobuf安装使用下载
    • 匹配环境变量
    • 下载protobuf的golang支持库,安装protoc-gen-go
    • 案例演示
      • 参数解析:
      • 假设你的项目结构如下:
      • 测试用例

COPYRIGHT © 2025 TH小破站. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2023013789号

渝公网安备50011702500926号