GoFrame代码优化gconv类型转换避免重复定义map

前言

最近一直在研究 GoFrame 框架,经过一段时间的使用、总结、思考,发现确实不失为一款非常值得使用的企业级开发框架。

在我初识GoFrame教程后,曾整理过一篇文章: 非常适合PHP同学学习的GO框架:GoFrame,有兴趣的同学可以阅读一下。

今天重点讲一下我使用GoFrame的代码优化之旅。

核心重点

GoFrame几乎封装了所有能封装的东西,而我们需要做的就是在框架的基础上约定好自己项目的开发规范。

一定要遵守统一的规范!

一定要遵守统一的规范!

一定要遵守统一的规范!

GoFramegconvstructgconv
ScanMap/StructGoFrameDAOModel/DAO

以上两个部分是重中之重,建议大家好好研究。

类型转换 和 数据库ORM 也是我下面优化代码的重要参考。

优化前

这种重复定义让我很难受:

优化后:

去掉定义map:

可以这么写的原因

gome.Category.Get(ctx, pid) 返回的是 CategoryRes结构体:

进一步优化 批量写入

Data()

更优雅的写法如下

可以向上滑,看看优化前的代码是怎么写的。

优化后的代码完全实现了优化代码前的功能,且性能更好,因为使用了批量插入。

总结

gconv

不要像下面这样写代码!NO!

要有这种优化代码的意识,当我们意识到重复定义时,就一定有办法优化。

当我们意识到逻辑混乱时,就一定有办法优化结构,混乱的逻辑往往是设计的不合理导致的。