# go-zero-rpc-demo **Repository Path**: unsafe-rust/go-zero-rpc-demo ## Basic Information - **Project Name**: go-zero-rpc-demo - **Description**: No description available - **Primary Language**: Go - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-13 - **Last Updated**: 2021-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # go-zero-rpc-demo * [go-zero官方文档链接](https://go-zero.dev/cn/rpc-call.html) ###1、 在项目根目录下编写 `user.proto` 文件 ````go syntax = "proto3"; // 指定 user.pb.go 的输出包名(该选项,必须指定) package user; // 指定 user.pb.go 的输出包名,这里可以指定,也可以不指定(缺省并不会影响代码的生成) option go_package = "user"; message IdReq{ int64 id = 1; } message UserInfoReply{ int64 id = 1; string name = 2; string number = 3; string gender = 4; } service user { rpc getUser(IdReq) returns(UserInfoReply); } ```` * ⚠️ : `如果安装的 protoc-gen-go 版大于1.4.0, proto文件建议加上go_package` ###2、生成rpc服务代码 ````shell goctl rpc proto -src user.proto -dir . ```` ###3、目录结构如下 (tree) ````shell . ├── LICENSE ├── README.md ├── etc │   └── user.yaml ├── go.mod ├── internal │   ├── config │   │   └── config.go │   ├── logic │   │   └── getuserlogic.go │   ├── server │   │   └── userserver.go │   └── svc │   └── servicecontext.go ├── user │   ├── user.go │   └── user.pb.go ├── user.go └── user.proto ```` ###4、添加配置及完善yaml配置项 ````shell $ vim go-zero-rpc-demo/internal/config/config.go ```` ````go type Config struct { zrpc.RpcServerConf // 数据持久化 mysql 配置 Mysql struct { DataSource string } // 分布式缓存配置 CacheRedis cache.CacheConf } ```` ````shell $ vim go-zero-rpc-demo/etc/user.yaml ```` ````yaml Name: user.rpc ListenOn: 127.0.0.1:8080 #侦听的服务器和端口 Etcd: # etcd 服务发现 # 服务器集群列表 Hosts: - 127.0.0.1:2379 Key: user.rpc # 服务的Key # 以下代码自定义 Mysql: DataSource: root:root@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai CacheRedis: Host: "" Pass: "" Type: "" ```` ###5、添加资源依赖 ````shell $ vim go-zero-rpc-demo/internal/svc/servicecontext.go ```` ````go ````