工作日志- 不定期更新

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.proto

package third

import (
	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 .

        

相关推荐

  1. 工作日志- 定期更新

    2024-03-31 00:18:33       45 阅读
  2. 开发常用工具网站(定时更新

    2024-03-31 00:18:33       68 阅读
  3. PostgreSQL 低级错误集锦 (定时更新

    2024-03-31 00:18:33       60 阅读
  4. 【QT学习笔记】目录 (定时更新

    2024-03-31 00:18:33       44 阅读
  5. C语言相关知识点(定期更新内容)

    2024-03-31 00:18:33       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 00:18:33       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 00:18:33       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 00:18:33       82 阅读
  4. Python语言-面向对象

    2024-03-31 00:18:33       91 阅读

热门阅读

  1. P19:注释

    2024-03-31 00:18:33       37 阅读
  2. 实现元素水平垂直居中的方法

    2024-03-31 00:18:33       44 阅读
  3. SpringBoot -- 错误处理机制

    2024-03-31 00:18:33       44 阅读
  4. vue3从精通到入门1: vue3特点以及与vue2的区别

    2024-03-31 00:18:33       41 阅读
  5. 面试宝典:深入分析golang 的反射(reflect)

    2024-03-31 00:18:33       36 阅读
  6. 深入Python元编程:从基础到实践

    2024-03-31 00:18:33       39 阅读
  7. 面试题库二

    2024-03-31 00:18:33       45 阅读
  8. 蓝桥杯刷题记录之蓝桥王国

    2024-03-31 00:18:33       45 阅读
  9. C/C++ ② —— C++11智能指针

    2024-03-31 00:18:33       35 阅读
  10. 【前端学习——css篇】3.隐藏元素的方法

    2024-03-31 00:18:33       36 阅读
  11. C++蓝桥考级一级到十八级的考点内容整理

    2024-03-31 00:18:33       40 阅读
  12. js教程(10)

    2024-03-31 00:18:33       44 阅读