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命名空间下。
相关推荐
C语言扫地僧1 小时前
RPC 框架项目剖析
c++·网络协议·学习·rpc
YGGP2 小时前
基于 go-wrk 在 Windows 环境下对 Go Web 应用进行 HTTP 压力测试
http·golang·压力测试
+7202 小时前
如何使用HttpClinet实现RPC返回对象类型
网络·网络协议·rpc
LUCIAZZZ5 小时前
Https解决了Http的哪些问题
java·网络·网络协议·spring·http·rpc·https
+7206 小时前
如何在java中用httpclient实现rpc post 请求
java·开发语言·rpc
Villiam_AY6 小时前
goredis常见基础命令
redis·golang
PyAIGCMaster6 小时前
50周学习go语言:第四周 函数与错误处理深度解析
开发语言·学习·golang
PyAIGCMaster6 小时前
第二周补充:Go语言中&取地址符与fmt函数详解
开发语言·后端·golang
闲猫12 小时前
go orm GORM
开发语言·后端·golang
丁卯40412 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang