这是我的个人学习记录,它未必正确,如有错误请在评论区指出!
在这里我将创建一个Kratos项目,并且使它变得看起来相对干净,方便我后续的代码编写。
参考内容:
《kratos Docs》创建项目: https://go-kratos.dev/docs/getting-started/start
工具版本:
- go version go1.17.1 windows/amd64
- kratos version v2.1.1
安装 kratos 命令工具
go install github.com/go-kratos/kratos/cmd/kratos/v2
安装 Protobuf 编译工具
进入 https://github.com/protocolbuffers/protobuf/releases
- 下载电脑对应操作系统的 protobuf 编译工具
windows x64选择:

windows x64 选择的 protobuf 编译工具
- 解压编译工具到指定目录
创建目录: C:\Program Files\protoc-3.19.0 (如果你可以的话,这里可以修改为你喜欢的目录哦)
将下载到的”protoc-3.19.0-win64.zip”文件解压到目录”C:\Program Files\protoc-3.19.0”下

解压后的目录结构
- 配置环境变量

配置Protobuf环境变量
注意: 环境变量指向的目录需要到 “/bin” 层才完整哦
创建项目
# kratos 生成的模板项目GitHub为: https://github.com/go-kratos/kratos-layout# 生成一个名为"user"的项目kratos new user# 进入生成的项目目录cd user# 拉取项目依赖go mod download
删除目录:
/api/helloworld
删除文件:
/internal/biz/greeter.go/internal/data/greeter.go/internal/service/greeter.go
修改文件:
/internal/biz/biz.govar ProviderSet = wire.NewSet(NewGreeterUsecase)// 修改为var ProviderSet = wire.NewSet()
/internal/data/data.govar ProviderSet = wire.NewSet(NewData, NewGreeterRepo)// 修改为var ProviderSet = wire.NewSet(NewData)
/internal/service/service.govar ProviderSet = wire.NewSet(NewGreeterService)// 修改为var ProviderSet = wire.NewSet()
/internal/server/grpc.goimport (v1 "user/api/helloworld/v1" // 删除此行......)func NewGRPCServer(c *conf.Server, greeter *service.GreeterService, logger log.Logger) *grpc.Server {// ↓ 删除 "greeter *service.GreeterService"func NewGRPCServer(c *conf.Server, logger log.Logger) *grpc.Server {......v1.RegisterGreeterServer(srv, greeter) // 删除此行}
/internal/server/http.goimport (v1 "user/api/helloworld/v1" // 删除此行......)func NewHTTPServer(c *conf.Server, greeter *service.GreeterService, logger log.Logger) *http.Server {// ↓ 删除 "greeter *service.GreeterService"func NewHTTPServer(c *conf.Server, logger log.Logger) *http.Server {......v1.RegisterGreeterHTTPServer(srv, greeter) // 删除此行}
完成后我们就得到了一个干净的项目
