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

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命名空间下。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深入浅出大模型:LangChain详解——打造你的自定义Chain与异步API
  • 使用安卓手机安装Kali Linux
  • 基于微信小程序的高校大学生信息服务平台设计与实现
  • 未来不会使用 AI 的人真的会被淘汰吗?
  • iptables和firewalld的区别以及用法
  • 【Golang 面试 - 基础题】每日 5 题(七)
  • Python实战——轻松实现动态网页爬虫(附详细源码)
  • Python 如何创建和操作矩阵?
  • ffmpeg将视频转换成图片
  • 【全面介绍下Gitea,什么是Gitea?】
  • 敏捷产品经理实训:助力产品负责人掌握敏捷方法,提升产品开发效率
  • VB中如何操作数据库(使用ADO.NET连接和查询数据库)
  • 在VMware里面安装Linux安装教程
  • 实时数仓Hologres TPC-H及点查性能开箱测试
  • 电商电子面单API对接方法
  • ----------
  • DataBase in Android
  • Debian下无root权限使用Python访问Oracle
  • JavaScript设计模式系列一:工厂模式
  • PAT A1092
  • React-生命周期杂记
  • Sass 快速入门教程
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spark RDD学习: aggregate函数
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 目录与文件属性:编写ls
  • 我是如何设计 Upload 上传组件的
  • 协程
  • 转载:[译] 内容加速黑科技趣谈
  • PostgreSQL之连接数修改
  • #nginx配置案例
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)Hilt的基本概念和使用
  • (11)MATLAB PCA+SVM 人脸识别
  • (23)Linux的软硬连接
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (过滤器)Filter和(监听器)listener
  • (一)Dubbo快速入门、介绍、使用
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • .cfg\.dat\.mak(持续补充)
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .Net程序帮助文档制作
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .project文件
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • /var/lib/dpkg/lock 锁定问题
  • @property python知乎_Python3基础之:property
  • @vue/cli 3.x+引入jQuery