内容简介:大家好啊!万众瞩目的GoFrame v2版本终于发布了正式版本!本次版本包含了大量改进以及新特性,同时新增了一些开创性的功能特性。 去年夏天到今年春天,一路以来的努力,希望大家满意。 感谢所有社区小伙伴的贡献,...
大家好啊!万众瞩目的GoFrame v2版本终于发布了正式版本!本次版本包含了大量改进以及新特性,同时新增了一些开创性的功能特性。
去年夏天到今年春天,一路以来的努力,希望大家满意。
感谢所有社区小伙伴的贡献,感谢社区朋友们的支持!
新的一年,我们继续,脚踏实地,不忘初心!
一、重要特性
1、新版工程设计
2、全链路跟踪特性
- 可观测性更进一步:大胆的前瞻以及决心
- 框架默认启用
OpenTelemetry特性
- 框架默认创建
TraceID,按照OpenTelemetry生成标准
- 框架核心组件均支持链路跟踪信息传递
- 日志组件支持链路信息打印
- 更多详细介绍:全链路跟踪设计
3、规范路由注册特性
- 规范化API按照结构化编程设计
- 规范化API接口方法参数风格定义
- 更加简化的路由注册与维护
- 统一接口返回数据格式设计
- 自动的API参数对象化接收与校验
- 自动生成基于标准
OpenAPIv3协议的接口文档
- 自动生成
SwaggerUI页面
- 更多详细介绍:路由注册-规范路由
4、全错误堆栈特性
- 框架层面所做的重大决定
- 框架 所有 组件错误均支持错误堆栈
- 详细介绍:全错误堆栈设计
5、全新错误码特性
- 采用接口化设计,扩展性高
- 提供可供选择的常见错误码
- 框架核心组价底层已增加错误码支持,例如根据
error中的错误码可以识别是否DB执行错误
- 更多详细介绍:错误处理-错误码特性
6、组件接口化设计
- 自顶向下统一化的接口化设计
- 核心组件均采用接口化设计
- 更高的扩展性、可定制性
- 更多详细介绍:接口化与泛型设计
7、框架泛型的支持
- 什么是框架
gvar泛型?
- 框架
gvar泛型在框架核心组件中的大量使用
- 框架
gvar泛型的重要价值
- 为什么不建议在顶层业务中使用泛型
- 更多详细介绍:接口化与泛型设计
8、ORM的大量改进
- 详细介绍:数据库ORM
9、其他重要改进
1)日志组件Handler特性
- 采用中间件设计
- 支持多个
Handler处理
- 为开发者自定义日志处理提供了更灵活强大的支持
- 更多详细介绍:日志组件-Handler
2)日志组件颜色打印
- 在终端中默认输出颜色打印
- 默认不同级别不同的颜色,可配置
- 输出到文件/自定义
Writer默认关闭,可通过相关配置开启
- 更多详细介绍:日志组件-颜色打印
4)调试模式介绍完善
- 更多详细介绍:调试模式
二、功能改进
1、数据组件
/database/gdb
- 废弃
Table方法,统一使用Model方法创建Model对象。
- 废弃
Model中的Struct/Structs方法,统一使用Scan方法执行查询结果到Struct对象/对象数组映射转换:ORM查询-Scan
- 废弃
BatchInsert/BatchReplace/BatchSave方法,统一使用Insert/Replace/Save方法实现,内部自动实现参数类型识别采用单条写入还是批量写入:ORM链式操作-写入保存
- 增加
DoFilter接口方法,用于ORM提交执行SQL&Args到底层driver之前的SQL&Args自定义过滤:ORM接口开发-回调处理
- 增加
DoCommit接口方法,用于ORM提交执行SQL&Args到底层driver之前的自定义处理:https://
- 增加
ConvertDataForRecord接口方法,用于自定义的数据转换处理。ORM接口开发-回调处理
- 增加
Raw方法,用于通过原始SQL语句构建Model对象,随后可以使用Model的链式操作以及各种特性:ORM链式操作-模型创建
- 增加
Handler特性,用于自定义的Model对象修改,并返回新的Model对象,可轻松地复用常见的逻辑:ORM链式操作-Handler特性
- 增加
Union/UnionAll特性,用于多条SQL/Model的查询结果合并:ORM查询-Union/UnionAll
- 增加
With特性对条件查询以及 排序 语句的配置支持:模型关联-With特性
- 增加
OnDuplicate/OnDuplicateEx方法,用于指定Save方法的更新/不更新字段:ORM链式操作-写入保存
- 增加
Wheref/WhereOrf方法,用于带有格式化字符串语句的条件传递:ORM查询-Where/WhereOr/WhereNot
- 增加
WhereLT/WhereLTE/WhereGT/WhereGTE以及WhereOrLT/WhereOrLTE/WhereOrGT/WhereOrGTE方法,用以为ORM添加常见的比较条件:https://
- 增加
WherePrefix/WhereOrPrefix方法,用以在为条件字段加上表前缀,常用于关联查询中:https://
- 增加
FieldsPrefix/FieldsExPrefix方法,用于为查询的字段增加自定义的表前缀,常用于关联查询中:https://
- 增加
FieldsCount/FieldsSum/FieldsMin/FieldsMax/FieldsAvg方法,用于增加常见的统一查询条件:https://
- 增加
LeftJoinOnField/RightJoinOnField/InnerJoinOnField方法,用于便捷关联带有相同字段名称的表:https://
- 增加
OmitEmptyWhere/OmitEmptyData方法,用于特定过滤Where条件和Data数据中的空值数据:ORM链式操作-字段过滤
- 增加
OmitNil/OmitNilWhere/OmitNilData方法,用于特定过滤Where条件和Data数据中的nil数据:ORM链式操作-字段过滤
- 增加
TimeZone配置项,用于数据库查询的自定义时区转换(目前支持mysql/pgsql):ORM使用配置
- 改进
Cache缓存特性,支持增加准确的缓存参数控制:https://
- 增加
Close方法,用于手动关闭数据库连接:https://
- 去掉
ORM在使用没有自定义配置时默认100连接数的配置限制。
- 改进时间维护特性,不再自动过滤开发者提交的
CreatedAt/UpdatedAt/DeletedAt相关参数,意味着开发者可以在ORM操作中自定义相关时间字段的更新。
- 改进数据库执行的 SQL 日志记录,增加影响行数记录:https://
- 接口方法
HandleSqlBeforeCommit名称修改为了DoCommit。
- 数据库方法操作统一增加
context.Context作为第一必须参数。
- 修复
gdb组件的With特性多层级查询失效问题。
- 删除查询结果类型
Record/Result的所有已废弃的方法。
- 单元测试完善。
/database/gredis
-
采用适配器模式,以接口化设计重构该组件,以提高扩展性:Redis-接口化设计
- 默认提供基于第三方
goredis包的适配器实现,增加了对Redis集群的支持:Redis-配置管理
- 由于集群特性的支持,配置文件格式发生改变:Redis-配置管理
2、网络组件
/net/ghttp
- 新增路由注册方式:路由注册-规范路由
- 默认将
Request对象注入到ctx上下文对象中,并增加RequestFromCtx/g.RequestFromCtx方法获取ctx中的Request对象。
- 将
Client功能特性进行抽离,封装为gclient组件:HTTPClient
Server日志增加对ctx上下文链路信息打印的支持,并改进日志格式:链路跟踪
- 参数获取返回统一使用
*gvar.Var泛型对象。
- 废弃
ghttp中相关的HTTP Client直接操作方法,必须通过创建Client对象来实现客户端访问操作。
- 废弃
Controller路由注册方式,并删除相关实现逻辑代码。
/net/gtrace
- 升级
go.opentelemetry.io/otel到最新的正式版。
- 完善全新的链路跟踪使用文档:链路跟踪
3、系统组件
/os/glog
- 为推进可观测性特性,落实链路跟踪规范,所有日志打印方法均增加
context.Context参数。
- 日志组件增加了
Handler特性,采用中间件设计、支持多个Handler处理,为开发者自定义日志处理提供了更灵活强大的支持:日志组件-Handler
- 日志组件增加了对内容的颜色打印特性支持,在终端中默认输出颜色打印,输出到文件/自定义
Writer默认关闭、可通过相关配置开启:日志组件-颜色打印
- 废弃
Println方法。
- 文档更新:日志组件
/os/gres
- 新增
Export方法用于将资源组件中的文件导出到本地磁盘:资源管理-方法介绍
/os/gfile
- 新增
SizeFormat方法用于获取指定文件格式化后的大小字符串。
- 文档更新:文件管理-gfile
/os/gcache
- 采用适配器模式,以接口化设计重构该组件,以提高扩展性:缓存管理-接口化设计
- 默认提供了基于进程内存的缓存实现:缓存管理-内存缓存
- 所有操作方法增加了
context.Context上下文参数。
- 参数获取返回统一使用
*gvar.Var泛型对象。
- 增加
Must*方法,用以直接获取参数并在产生错误时直接panic。
/os/gcfg
- 采用适配器模式,以接口化设计重构该组件,以提高扩展性:配置管理-接口化设计
- 默认提供了基于文件系统的配置管理实现:配置管理
- 参数获取返回统一使用
*gvar.Var泛型对象。
- 所有操作方法增加了
context.Context上下文参数。
- 增加
GetWithEnv方法,当配置适配器中无法查找到对应的参数时,将会自动读取环境变量中的相应参数:配置管理-配置读取
- 增加
GetWithCmd方法,当配置适配器中无法查找到对应的参数时,将会自动读取命令行参数中的相应参数:配置管理-配置读取
- 增加
Must*方法,用以直接获取参数并在产生错误时直接panic。
- 配置组件易用性改进,通过单例对象访问配置组件将会按照
toml/yaml/yml/json/ini/xml文件后缀自动检索配置文件:配置管理
/os/gcmd
- 参数获取返回统一使用
*gvar.Var泛型对象。
- 全新的多层级命令行管理方式,支持自动生成命令行使用提示:命令管理-命令行对象
- 增加基于对象的命令行管理方式,更适合大量的终端命令场景:命令管理-结构化参数
/os/genv
- 参数获取返回统一使用
*gvar.Var泛型对象。
/os/gcron
- 定时任务方法定义增加
context.Context参数。
- 所有创建定时任务方法增加
context.Context参数。
- 文档更新:定时任务-gcron
/os/gtime
- 废弃
Second/Millisecond/Microsecond/Nanosecond包方法,使用Timestamp/TimestampMilli/TimestampMicro/TimestampNano方法替代。
- 文档更新:时间管理-gtime
/os/gtimer
- 定时器方法定义增加
context.Context参数。
- 所有创建定时器方法增加
context.Context参数。
- 改进基于优先级队列数据结构存储的定时任务执行检测机制,提高执行性能。
- 文档更新:定时器-gtimer
/os/grpool
- 回调方法定义增加
context.Context参数。
goroutine池任务添加方法增加context.Context参数。
- 文档更新:协程管理-grpool
/os/gsession
gsession.Storage接口增加ctx上下文参数输输入,用于承接上下文信息、实现完整的链路跟踪。并未保证严谨性增加error返回参数:Session
- 参数获取返回统一使用
*gvar.Var泛型对象。
/os/gview
- 模板解析方法统一增加
context.Context参数。
- 增加
plus/minus/times/divide四则运算内置模板方法。
- 文档更新:模板引擎
/os/gstructs
- 将框架
internal中的structs包开放,命名为gstructs,用于struct反射操作的高级使用包:对象信息-gstructs
4、错误处理
/errors/gerror
- 增加
Message方法,用于获取指定错误码的错误信息。
- 增加
CodeMessage方法,用于获取指定错误的错误码信息。
- 增加
NewOption方法,用于自定义配置的错误对象创建,献给框架高级玩家。
- 增加
HasStack方法,用于判断给定的error接口对象是否实现(包含)了堆栈信息。
- 错误码从整型改为接口对象,以实现可定制性并提高可扩展性,详情参考
gcode组件介绍:错误处理-错误码特性
- 提高易用性,改进
NewCode/NewCodeSkip/WrapCode/WrapCodeSkip方法,调增text输入参数为非必须,默认使用对应错误码的Message信息。
/errors/gcode
- 增加
gcode错误码组件,提供可定制型和扩展性极强的错误码管理,结合gerror组件实现强大的错误处理:错误处理-错误码使用
5、其他组件
/container/garray
- 各数组类型统一增加
At方法,用于直接获取返回索引位置的数据。
- 文档更新:数组类型-方法介绍
/debug/gdebug
- 增加
TestDataContent方法,用于直接获取测试包下testdata目录下指定路径文件内容。
- 文档更新:调试功能-gdebug
/encoding/gjson
- 废弃大部分的
Get*方法,统一使用Get方法获取指定pattern的内容,并统一返回*gvar.Var泛型对象,开发者根据业务场景自行通过对应方法便捷转换为特定类型变量。
- 增加若干
Must*方法。
- 使用文档全面更新:https://
/frame/g
/frame/gmvc
- 标记废除
gmvc耦合模块,未来不再进一步支持。
/util/gutil
- 改进实现
Dump方法,不再使用json包实现类型打印,而是自实现了对任意类型的打印特性,并且支持打印详细的数据类型:工具方法-gutil
- 增加
SliceToMapWithColumnAsKey方法,用以将Slice按照一定规则转换为Map。
/utils/gvalid
- 增加
bail校验规则,以及Bail链式操作方法,用以在数据校验不通过时直接退出校验,不再执行后续校验规则。
- 增加
datetime校验规则,用以校验常用日期时间类型,其中日期之间支持的连接符号只支持-,格式如:2006-01-02 12:00:00。
- 去掉包校验方法,统一使用链式操作实现数据校验。
- 所以校验方法增加
context.Context参数。
- 全新、超完善的数据校验组件使用文档:数据校验
其他大量的改进细节,这里不再赘述,感兴趣的小伙伴可参阅官网 goframe.org
三、CLI工具链
- 采用全新
gcmd命令行对象封装重构实现。
- 改进
init命令,支持SingleRepo/MonoRepo两种仓库初始化。并且项目初始化不再依赖远端仓库。
- 改进
gen dao命令,采用全新的V2工程化设计,自动生成entity/dao/dto代码文件。
- 去掉
update命令,工具的更新统一走 https://github.com/gogf/gf-cli
- 去掉
get命令。
- 全新文档:开发工具
OpenTelemetry特性TraceID,按照OpenTelemetry生成标准OpenAPIv3协议的接口文档SwaggerUI页面error中的错误码可以识别是否DB执行错误gvar泛型?gvar泛型在框架核心组件中的大量使用gvar泛型的重要价值Handler特性Handler处理Writer默认关闭,可通过相关配置开启1、数据组件
/database/gdb- 废弃
Table方法,统一使用Model方法创建Model对象。 - 废弃
Model中的Struct/Structs方法,统一使用Scan方法执行查询结果到Struct对象/对象数组映射转换:ORM查询-Scan - 废弃
BatchInsert/BatchReplace/BatchSave方法,统一使用Insert/Replace/Save方法实现,内部自动实现参数类型识别采用单条写入还是批量写入:ORM链式操作-写入保存 - 增加
DoFilter接口方法,用于ORM提交执行SQL&Args到底层driver之前的SQL&Args自定义过滤:ORM接口开发-回调处理 - 增加
DoCommit接口方法,用于ORM提交执行SQL&Args到底层driver之前的自定义处理:https:// - 增加
ConvertDataForRecord接口方法,用于自定义的数据转换处理。ORM接口开发-回调处理 - 增加
Raw方法,用于通过原始SQL语句构建Model对象,随后可以使用Model的链式操作以及各种特性:ORM链式操作-模型创建 - 增加
Handler特性,用于自定义的Model对象修改,并返回新的Model对象,可轻松地复用常见的逻辑:ORM链式操作-Handler特性 - 增加
Union/UnionAll特性,用于多条SQL/Model的查询结果合并:ORM查询-Union/UnionAll - 增加
With特性对条件查询以及 排序 语句的配置支持:模型关联-With特性 - 增加
OnDuplicate/OnDuplicateEx方法,用于指定Save方法的更新/不更新字段:ORM链式操作-写入保存 - 增加
Wheref/WhereOrf方法,用于带有格式化字符串语句的条件传递:ORM查询-Where/WhereOr/WhereNot - 增加
WhereLT/WhereLTE/WhereGT/WhereGTE以及WhereOrLT/WhereOrLTE/WhereOrGT/WhereOrGTE方法,用以为ORM添加常见的比较条件:https:// - 增加
WherePrefix/WhereOrPrefix方法,用以在为条件字段加上表前缀,常用于关联查询中:https:// - 增加
FieldsPrefix/FieldsExPrefix方法,用于为查询的字段增加自定义的表前缀,常用于关联查询中:https:// - 增加
FieldsCount/FieldsSum/FieldsMin/FieldsMax/FieldsAvg方法,用于增加常见的统一查询条件:https:// - 增加
LeftJoinOnField/RightJoinOnField/InnerJoinOnField方法,用于便捷关联带有相同字段名称的表:https:// - 增加
OmitEmptyWhere/OmitEmptyData方法,用于特定过滤Where条件和Data数据中的空值数据:ORM链式操作-字段过滤 - 增加
OmitNil/OmitNilWhere/OmitNilData方法,用于特定过滤Where条件和Data数据中的nil数据:ORM链式操作-字段过滤 - 增加
TimeZone配置项,用于数据库查询的自定义时区转换(目前支持mysql/pgsql):ORM使用配置 - 改进
Cache缓存特性,支持增加准确的缓存参数控制:https:// - 增加
Close方法,用于手动关闭数据库连接:https:// - 去掉
ORM在使用没有自定义配置时默认100连接数的配置限制。 - 改进时间维护特性,不再自动过滤开发者提交的
CreatedAt/UpdatedAt/DeletedAt相关参数,意味着开发者可以在ORM操作中自定义相关时间字段的更新。 - 改进数据库执行的 SQL 日志记录,增加影响行数记录:https://
- 接口方法
HandleSqlBeforeCommit名称修改为了DoCommit。 - 数据库方法操作统一增加
context.Context作为第一必须参数。 - 修复
gdb组件的With特性多层级查询失效问题。 - 删除查询结果类型
Record/Result的所有已废弃的方法。 - 单元测试完善。
- 废弃
/database/gredis-
采用适配器模式,以接口化设计重构该组件,以提高扩展性:Redis-接口化设计
- 默认提供基于第三方
goredis包的适配器实现,增加了对Redis集群的支持:Redis-配置管理 - 由于集群特性的支持,配置文件格式发生改变:Redis-配置管理
-
2、网络组件
/net/ghttp- 新增路由注册方式:路由注册-规范路由
- 默认将
Request对象注入到ctx上下文对象中,并增加RequestFromCtx/g.RequestFromCtx方法获取ctx中的Request对象。 - 将
Client功能特性进行抽离,封装为gclient组件:HTTPClient Server日志增加对ctx上下文链路信息打印的支持,并改进日志格式:链路跟踪- 参数获取返回统一使用
*gvar.Var泛型对象。 - 废弃
ghttp中相关的HTTP Client直接操作方法,必须通过创建Client对象来实现客户端访问操作。 - 废弃
Controller路由注册方式,并删除相关实现逻辑代码。
/net/gtrace- 升级
go.opentelemetry.io/otel到最新的正式版。 - 完善全新的链路跟踪使用文档:链路跟踪
- 升级
3、系统组件
/os/glog- 为推进可观测性特性,落实链路跟踪规范,所有日志打印方法均增加
context.Context参数。 - 日志组件增加了
Handler特性,采用中间件设计、支持多个Handler处理,为开发者自定义日志处理提供了更灵活强大的支持:日志组件-Handler - 日志组件增加了对内容的颜色打印特性支持,在终端中默认输出颜色打印,输出到文件/自定义
Writer默认关闭、可通过相关配置开启:日志组件-颜色打印 - 废弃
Println方法。 - 文档更新:日志组件
- 为推进可观测性特性,落实链路跟踪规范,所有日志打印方法均增加
/os/gres- 新增
Export方法用于将资源组件中的文件导出到本地磁盘:资源管理-方法介绍
- 新增
/os/gfile- 新增
SizeFormat方法用于获取指定文件格式化后的大小字符串。 - 文档更新:文件管理-gfile
- 新增
/os/gcache- 采用适配器模式,以接口化设计重构该组件,以提高扩展性:缓存管理-接口化设计
- 默认提供了基于进程内存的缓存实现:缓存管理-内存缓存
- 所有操作方法增加了
context.Context上下文参数。 - 参数获取返回统一使用
*gvar.Var泛型对象。 - 增加
Must*方法,用以直接获取参数并在产生错误时直接panic。
/os/gcfg- 采用适配器模式,以接口化设计重构该组件,以提高扩展性:配置管理-接口化设计
- 默认提供了基于文件系统的配置管理实现:配置管理
- 参数获取返回统一使用
*gvar.Var泛型对象。 - 所有操作方法增加了
context.Context上下文参数。 - 增加
GetWithEnv方法,当配置适配器中无法查找到对应的参数时,将会自动读取环境变量中的相应参数:配置管理-配置读取 - 增加
GetWithCmd方法,当配置适配器中无法查找到对应的参数时,将会自动读取命令行参数中的相应参数:配置管理-配置读取 - 增加
Must*方法,用以直接获取参数并在产生错误时直接panic。 - 配置组件易用性改进,通过单例对象访问配置组件将会按照
toml/yaml/yml/json/ini/xml文件后缀自动检索配置文件:配置管理
/os/gcmd- 参数获取返回统一使用
*gvar.Var泛型对象。 - 全新的多层级命令行管理方式,支持自动生成命令行使用提示:命令管理-命令行对象
- 增加基于对象的命令行管理方式,更适合大量的终端命令场景:命令管理-结构化参数
- 参数获取返回统一使用
/os/genv- 参数获取返回统一使用
*gvar.Var泛型对象。
- 参数获取返回统一使用
/os/gcron- 定时任务方法定义增加
context.Context参数。 - 所有创建定时任务方法增加
context.Context参数。 - 文档更新:定时任务-gcron
- 定时任务方法定义增加
/os/gtime- 废弃
Second/Millisecond/Microsecond/Nanosecond包方法,使用Timestamp/TimestampMilli/TimestampMicro/TimestampNano方法替代。 - 文档更新:时间管理-gtime
- 废弃
/os/gtimer- 定时器方法定义增加
context.Context参数。 - 所有创建定时器方法增加
context.Context参数。 - 改进基于优先级队列数据结构存储的定时任务执行检测机制,提高执行性能。
- 文档更新:定时器-gtimer
- 定时器方法定义增加
/os/grpool- 回调方法定义增加
context.Context参数。 goroutine池任务添加方法增加context.Context参数。- 文档更新:协程管理-grpool
- 回调方法定义增加
/os/gsessiongsession.Storage接口增加ctx上下文参数输输入,用于承接上下文信息、实现完整的链路跟踪。并未保证严谨性增加error返回参数:Session- 参数获取返回统一使用
*gvar.Var泛型对象。
/os/gview- 模板解析方法统一增加
context.Context参数。 - 增加
plus/minus/times/divide四则运算内置模板方法。 - 文档更新:模板引擎
- 模板解析方法统一增加
/os/gstructs- 将框架
internal中的structs包开放,命名为gstructs,用于struct反射操作的高级使用包:对象信息-gstructs
- 将框架
4、错误处理
/errors/gerror- 增加
Message方法,用于获取指定错误码的错误信息。 - 增加
CodeMessage方法,用于获取指定错误的错误码信息。 - 增加
NewOption方法,用于自定义配置的错误对象创建,献给框架高级玩家。 - 增加
HasStack方法,用于判断给定的error接口对象是否实现(包含)了堆栈信息。 - 错误码从整型改为接口对象,以实现可定制性并提高可扩展性,详情参考
gcode组件介绍:错误处理-错误码特性 - 提高易用性,改进
NewCode/NewCodeSkip/WrapCode/WrapCodeSkip方法,调增text输入参数为非必须,默认使用对应错误码的Message信息。
- 增加
/errors/gcode- 增加
gcode错误码组件,提供可定制型和扩展性极强的错误码管理,结合gerror组件实现强大的错误处理:错误处理-错误码使用
- 增加
5、其他组件
/container/garray- 各数组类型统一增加
At方法,用于直接获取返回索引位置的数据。 - 文档更新:数组类型-方法介绍
- 各数组类型统一增加
/debug/gdebug- 增加
TestDataContent方法,用于直接获取测试包下testdata目录下指定路径文件内容。 - 文档更新:调试功能-gdebug
- 增加
/encoding/gjson- 废弃大部分的
Get*方法,统一使用Get方法获取指定pattern的内容,并统一返回*gvar.Var泛型对象,开发者根据业务场景自行通过对应方法便捷转换为特定类型变量。 - 增加若干
Must*方法。 - 使用文档全面更新:https://
- 废弃大部分的
/frame/g/frame/gmvc- 标记废除
gmvc耦合模块,未来不再进一步支持。
- 标记废除
/util/gutil- 改进实现
Dump方法,不再使用json包实现类型打印,而是自实现了对任意类型的打印特性,并且支持打印详细的数据类型:工具方法-gutil - 增加
SliceToMapWithColumnAsKey方法,用以将Slice按照一定规则转换为Map。
- 改进实现
/utils/gvalid- 增加
bail校验规则,以及Bail链式操作方法,用以在数据校验不通过时直接退出校验,不再执行后续校验规则。 - 增加
datetime校验规则,用以校验常用日期时间类型,其中日期之间支持的连接符号只支持-,格式如:2006-01-02 12:00:00。 - 去掉包校验方法,统一使用链式操作实现数据校验。
- 所以校验方法增加
context.Context参数。 - 全新、超完善的数据校验组件使用文档:数据校验
- 增加
其他大量的改进细节,这里不再赘述,感兴趣的小伙伴可参阅官网 goframe.org
三、CLI工具链
- 采用全新
gcmd命令行对象封装重构实现。
- 改进
init命令,支持SingleRepo/MonoRepo两种仓库初始化。并且项目初始化不再依赖远端仓库。
- 改进
gen dao命令,采用全新的V2工程化设计,自动生成entity/dao/dto代码文件。
- 去掉
update命令,工具的更新统一走 https://github.com/gogf/gf-cli
- 去掉
get命令。
- 全新文档:开发工具
gcmd命令行对象封装重构实现。init命令,支持SingleRepo/MonoRepo两种仓库初始化。并且项目初始化不再依赖远端仓库。gen dao命令,采用全新的V2工程化设计,自动生成entity/dao/dto代码文件。update命令,工具的更新统一走 https://github.com/gogf/gf-cliget命令。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- quickly 1.3 版本发布,CSS 前端框架
- WebMagic 0.7.1 版本发布,Java 爬虫框架
- PHP 开发框架 TimoPHP 1.7.0 版本发布
- WebMagic 0.7.0 版本发布,Java 爬虫框架
- WebMagic 0.7.2 版本发布,Java 爬虫框架
- DiQuick Web 前端框架 1.2.3 版本更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Game Programming Patterns
Robert Nystrom / Genever Benning / 2014-11-2 / USD 39.95
The biggest challenge facing many game programmers is completing their game. Most game projects fizzle out, overwhelmed by the complexity of their own code. Game Programming Patterns tackles that exac......一起来看看 《Game Programming Patterns》 这本书的介绍吧!