windows go grpc

windows环境安装go grpc 的工具和插件

在Windows环境下,安装Protocol Buffers(proto)和gRPC相关的工具和插件,可以通过以下几个步骤进行

复制代码
1.安装protoc 
在git 仓库下载tag 包
https://github.com/protocolbuffers/protobuf/releases
或者直接安装v25.4版本,链接:https://github.com/protocolbuffers/protobuf/releases/tag/v25.4
再或者在goland IDE plugins 安装插件
解压后,将下载到本地的protoc.exe ,复制到GOPATH 下 bin 目录

2.gRPC的Go插件包括protoc-gen-go和protoc-gen-go-grpc,用于将.proto文件编译成Go语言的源代码文件
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest  
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
这些命令会将相应的可执行文件安装到你的GOPATH 的bin目录中
如果执行失败,需要配置GOPROXY=goproxy.io,https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct

测试

复制代码
运行 protoc --version来验证protoc编译器是否安装成功。
运行protoc-gen-go --version和protoc-gen-go-grpc --version来验证Go插件是否安装成功
生成go 文件:
protoc --go_out=. --go-grpc_out=. your_proto_file.proto

proto 文件顶部

复制代码
syntax = "proto3";

package google.protobuf;

option cc_enable_arenas = true;
option go_package = "google.golang.org/protobuf/types/known/wrapperspb";
option java_package = "com.google.protobuf";
option java_outer_classname = "WrappersProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
option csharp_namespace = "Google.Protobuf.WellKnownTypes";

syntax = "proto3";:这指定了使用Proto3语法。Proto3是Protocol Buffers的第三版语法,相较于之前的版本(Proto2),它提供了一些改进和简化,比如移除了对可选字段的支持,增加了对Map类型的支持等。
package google.protobuf;:这定义了proto文件的包名。在生成的代码中,这将影响类、枚举等的命名空间或包路径。在这个例子中,它指定了生成的代码应该位于google.protobuf这个包下。
option cc_enable_arenas = true;:这是一个针对C++的选项,用于启用内存池(arenas)以优化内存分配。在C++中,这可以减少内存分配的开销,提高性能。
option go_package = "google.golang.org/protobuf/types/known/wrapperspb";:这是针对Go语言的选项,指定了生成的Go代码应该使用的包路径。在这个例子中,它告诉Go编译器生成的代码应该放在google.golang.org/protobuf/types/known/wrapperspb这个包下。
option java_package = "com.google.protobuf";:这是针对Java的选项,指定了生成的Java代码应该放在哪个包下。在这个例子中,生成的Java类将位于com.google.protobuf包下。
option java_outer_classname = "WrappersProto";:这也是针对Java的选项,指定了生成的Java外部类的名称。当.proto文件包含多个消息或枚举时,这些元素会被放在一个外部类中。在这个例子中,外部类的名称被指定为WrappersProto。
option java_multiple_files = true;:这同样是针对Java的选项,指定是否应该为每个消息、枚举等生成单独的Java文件。在这个例子中,它被设置为true,意味着每个消息或枚举都将被生成到它自己的Java文件中。
option objc_class_prefix = "GPB";:这是针对Objective-C的选项,指定了生成的Objective-C类名中应该使用的前缀。在这个例子中,所有生成的Objective-C类名都将以GPB为前缀。
option csharp_namespace = "Google.Protobuf.WellKnownTypes";:这是针对C#的选项,指定了生成的C#代码应该使用的命名空间。在这个例子中,生成的C#类将位于Google.Protobuf.WellKnownTypes命名空间下。
相关推荐
参.商.12 小时前
【Day48】46. 全排列
leetcode·golang
jinanwuhuaguo15 小时前
OpenClaw全网使用人群全景深度分析报告
网络·人工智能·网络协议·rpc·openclaw
童话ing17 小时前
【LeetCode】239.滑动窗口最大值
数据结构·算法·leetcode·golang
不会写DN17 小时前
Go 中最主流 JWT 库 jwt -go
开发语言·后端·golang
liuqun031918 小时前
go进阶之gc
开发语言·后端·golang
古城小栈18 小时前
go核武器——pprof 性能分析
golang
zhuhezhang20 小时前
一个用golang开发的文本对比工具
开发语言·后端·golang·wails
Reisentyan20 小时前
[backend]GoLang Learn Data Day 2
开发语言·后端·golang
Tony Bai1 天前
Rust 看了流泪,AI 看了沉默:扒开 Go 泛型最让你抓狂的“残疾”类型推断
开发语言·人工智能·后端·golang·rust
ん贤1 天前
AI 大模型落地系列|Eino 编排进阶篇:一文讲透编排(Chain 与 Graph)
人工智能·golang·编排·eino