golang版本。
1、基础软件
protoc: 支持序列化的高效、低占用软件。
protoc-gen-go: 支持go编译的插件。
2、脚手架
生成核心交互逻辑,当前版本,引自官网: https://grpc.io/docs/languages/go/quickstart/#regenerate-grpc-code (备注: 重点参考官网)
以下,为 1.47.0 之前的版本。
protoc --proto_path=IMPORT_PATH --go_out=OUT_DIR --go_opt=paths=source_relative path/to/file.proto
新版编辑: 2023-02-10
以下,为
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
helloworld/helloworld.proto
解释:
proto_path或者-I :指定 import 路径,可以指定多个参数,编译时按顺序查找,不指定时默认查找当前目录。
proto 文件中也可以引入其他 .proto 文件,这里主要用于指定被引入文件的位置。
go_out:golang编译支持,指定输出文件路径
go_opt:指定参数,比如--go_opt=paths=source_relative就是表明生成文件输出使用相对路径。
path/to/file.proto :被编译的 .proto 文件放在最后面
file.proto内容
1 syntax = "proto3"; 2 3 //option go_package = "path;name"; 4 //path 表示生成的go文件的存放地址,会自动生成目录的。 5 //name 表示生成的go文件所属的包名 6 option go_package="./;proto"; 7 // 定义包名 8 package proto; 9 10 // 定义Greeter服务 11 service Greeter { 12 // 定义SayHello方法,接受HelloRequest消息, 并返回HelloReply消息 13 rpc SayHello (HelloRequest) returns (HelloReply) {} 14 } 15 16 // 定义HelloRequest消息 17 message HelloRequest { 18 // name字段 19 string name = 1; 20 } 21 22 // 定义HelloReply消息 23 message HelloReply { 24 // message字段 25 string message = 1; 26 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2017-06-28 对于技术与自身现在的理解