Go - 代码生成工具 (2)

比如 test_handler 中定义的 type interface 如下:

var _ Handler = (*handler)(nil) type Handler interface { // i 为了避免被其他包实现 i() // Create 创建用户 Create() core.HandlerFunc // Update 编辑用户 Update() core.HandlerFunc // Delete 删除用户 Delete() core.HandlerFunc // Detail 用户详情 Detail() core.HandlerFunc } type handler struct { logger *zap.Logger cache cache.Repo userService user_service.UserService } func New(logger *zap.Logger, db db.Repo, cache cache.Repo) Handler { return &handler{ logger: logger, cache: cache, userService: user_service.NewUserService(db, cache), } } func (h *handler) i() {}

在根目录下执行脚本:

./scripts/handlergen.sh test_handler // test_handler 为需要生成 handler 的包名

执行完毕后,会在 /internal/api/controller/test_handler 中生成 4 个文件:

func_create.go

func_update.go

func_detail.go

func_delete.go

func_create.go 内容如下:

type createRequest struct{} type createResponse struct{} func (h *handler) Create() core.HandlerFunc { return func(c core.Context) { } }

其中 createRequest 为入参结构体,createResponse 为出参结构体。

func_update.go 内容如下:

type updateRequest struct{} type updateResponse struct{} func (h *handler) Update() core.HandlerFunc { return func(c core.Context) { } }

func_detail.go 内容如下:

type detailRequest struct{} type detailResponse struct{} func (h *handler) Detail() core.HandlerFunc { return func(c core.Context) { } }

func_delete.go 内容如下:

type deleteRequest struct{} type deleteResponse struct{} func (h *handler) Delete() core.HandlerFunc { return func(c core.Context) { } }

以上代码都在 go-gin-api 项目中,地址:https://github.com/xinliangnote/go-gin-api

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgzxw.html