当前位置: 首页 > news >正文

工作日志- 不定期更新

1. protobuf中使用import引用其他proto文件,生成后在go语言的go modules中import 包名报错问题。

public.proto文件

//protoc --go_out=plugins=grpc:. public.proto
syntax = "proto3";package public;option go_package = "self/game-service/msg/public";message AwardItem {int32 prop_id = 1;int64 prop_num = 2;
}

third_s.proto 文件

syntax = "proto3";
package third;import "public.proto";option go_package = "self/game-service/msg/third";message ThirdTakeCornucopiaBonusResp {int32 code = 1;string message = 2;int32 take_cnt = 3;int32 take_cnt_max = 4;repeated public.AwardItem awards = 5;
}

生成后,指定的go_package 就是我们go 代码中import的包名:

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.33.0
// 	protoc        v5.26.0
// source: third_s.protopackage thirdimport (protoreflect "google.golang.org/protobuf/reflect/protoreflect"protoimpl "google.golang.org/protobuf/runtime/protoimpl"reflect "reflect"public "self/game-service/msg/public"sync "sync"
)// 其他代码 .....

由于 import public "self/game-service/msg/public" 在我们代码里面是能正常识别的,所以改动go_package即可,改动后生成:
.\protoc.exe --go_out=. --go-grpc_out=. *.proto
会在当前目录下生成:
./self/game-service/msg/public/public.pb.go 
./self/game-service/msg/third_s/third_s.pb.go

然后拷贝生成后的文件到项目代码目录即可正常参加编译
xcopy .\self\game-service\msg\* ..\game-server\msg\ /e /y /h /r /q
 

2. Windows安装构建golang protobuf + grpc 环境记录

1)下载protoc编译器。 直接上github.com下载,
        https://github.com/protocolbuffers/protobuf/tags
    下载后解压,拷贝到指定目录,或设置环境变量path指向protoc目录下bin
    cmd命令行执行 protoc -v  查看版本,可以识别命令表示成功。
2)## 安装 protoc-gen-go 插件
    go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
3)## 安装 protoc-gen-go-grpc 插件
    go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
4)写一个proto文件测试。
    protoc --go_out=. --go-grpc_out=. ./test.proto
5)安装完成后,应该会有两个文件(可执行文件exe)在环境变量GOPATH指向位置的bin/目录下
        protoc-gen-go-grpc.exe
        protoc-gen-go.exe
    如果没有需要去对应目录执行
        go install .

    如,我没有protoc-gen-go-grpc.exe,于是切换目录到
        C:\Users\Administrator\go\pkg\mod\google.golang.org\grpc\cmd\protoc-gen-go-grpc@v1.3.0
    在此目录打开cmd命令行,执行 go install .

        

http://www.lryc.cn/news/328721.html

相关文章:

  • Qt使用opencv打开摄像头
  • Redis的Hash数据结构中100万对field和value,field是自增时如何优化?优化Hash结构。
  • 二十四种设计模式与六大设计原则(一):【策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式】的定义、举例说明、核心思想、适用场景和优缺点
  • mac怎么删除python
  • 【笔记】Android U RILJ 中与运营商名称SPN显示相关的日志分析
  • 蓝桥杯【奇怪的捐赠】c语言
  • 【3月比赛合集】5场可报名的「创新应用」、「数据分析」和「程序设计」大奖赛,任君挑选!
  • vue3 视频播放功能整体复盘梳理
  • vue-ueditor-wrap上传图片报错:后端配置项没有正常加载,上传插件不能正常使用
  • 数据仓库的发展历程
  • MySQL开窗函数
  • Java学习笔记(23)
  • nodejs下载安装以及npm、yarn安装及配置教程
  • Playwright库page.evaluate()方法执行JavaScript 表达式
  • 【微服务】OpenFeign+Sentinel集中处理远程调用异常
  • 集合嵌套,Collections,斗地主案例,日志框架
  • maven pom relativePath属性的作用
  • 【STM32 HAL库SPI/QSPI协议学习,基于外部Flash读取。】
  • Nginx入门--初识Nginx的架构
  • 网络性能提升10%,ZStack Edge 云原生超融合基于第四代英特尔®至强®可扩展处理器解决方案发布
  • 双非计算机考研目标211,选11408还是22408更稳?
  • 简单了解策略模式
  • 算法——运动模型
  • 基于R语言lavaan结构方程模型(SEM)技术应用
  • 本地虚拟机服务器修改站点根目录并使用域名访问的简单示例
  • 生信数据分析——GO+KEGG富集分析
  • 微服务(基础篇-007-RabbitMQ)
  • 汇总:五个开源的Three.js项目
  • JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】
  • 部署云原生边缘计算平台kubeedge