**1.**环境的配置
主要是将一个代理配置到当前的环境变量当中
GO111MODULE on
GOPROXY goproxy.io,direct
把这两个加在系统变量里,理论上来说这样就行了
如果还不行看配置的代理号 git config --global http.proxy http://127.0.0.1:port
git config --global https.proxy https://127.0.0.1:port
将ip地址和端口改成自己本机上的端口号和IP
然后配置go.mod,一定要保证
module helloWorld
go 1.23.2
这里的module helloWorld指向的是自己项目的地址,保证把当前的项目作为主包
此后就可以使用go get添加新的包
简单提一下go.mod和go.sum的区别,go.sum可以指向特定包,即某个包的某个特定版本
go.work
go 1.18 引入了功能泛型 (Generics), 同时还引入的多模块工作区 (Workspaces) 和模糊测试 (Fuzzing)。
Go 多模块工作区能够使开发者能够更容易地同时处理多个模块的工作, 如:
方便进行依赖的代码调试(打断点、修改代码)、排查依赖代码 bug 方便同时进行多个仓库/模块并行开发调试
· go work init 初始化工作区文件, 用于生成 go.work 工作区文件
· go work use 添加新的模块到工作区
**2.**脚手架
脚手架"(scaffold)通常指的是一种快速生成基本项目结构的工具或框架。脚手架通常用于初始化新项目,提供一些基本的目录结构、文件模板和配置文件,以帮助开发人员快速开始项目开发,而不必从头开始手动创建这些基础结构
脚手架一般和DIL一起用
IDL(Interface Definition Language)是一种用于描述软件组件接口的语言。IDL通常用于分布式系统、远程过程调用(RPC)和接口定义方面。通过使用IDL,开发人员可以定义接口的方法、参数和数据类型,而无需关注底层通信细节。
IDL写好,脚手架快速生成一个框架
脚手架CWGO
安装:go install github.com/cloudwego/cwgo@latest
DIL:thrift
安装go install github.com/cloudwego/thriftgo@latest
转好之后将提前写好的.thrift文件转化
cwgo server --type RPC --module demo --service demo_thrift --idl ../idl/echo.thrift
另外一种工具是porto
这里详细记录一下怎么写
syntax="proto3";//指定版本
package auth;//指定当前Porto文件的路径
还有一个option,指定生成语言的地址,但是这里用的是cwgo,不单一生成一个go
message A{
int32 user_id= 0;//字段定义和编号
},A自己取名字
解释一下,每一种类型都应该有一个自己的编号,这些字段编号用于标识消息二进制格式中的字段,且在您的消息类型被使用后不应改变。
即通过编号作为标识,后续会把我的字段变成二进制编码
范围1到 15 中的字段编号使用一个字节进行编码,包括字段编号和字段类型。16至 2047范围内的字段编号占用两个字节。因此,您应为出现频率较高的消息元素预留 1到 15 之间的数字。请务必为将来可能添加的常见元素留出一些空间。
尽量编码1到15间
每一个message都会生成一个结构体,用于存储字段信息
service,要处理接口的逻辑
service AuthService {
rpc DeliverTokenByRPC(DeliverTokenReq) returns (DeliveryResp) {}
rpc VerifyTokenByRPC(VerifyTokenReq) returns (VerifyReq) {}
}
每一个rpc就是一个服务,这里Rpc所接受返回的参数,就是一个个message