同步操作将从 John/gf 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
v1.13.1
(2020-06-10)GF(Go Frame)
是一款模块化、高性能、生产级的Go基础开发框架。实现了比较完善的基础设施建设以及开发工具链,提供了常用的基础开发模块,如:缓存、日志、队列、数组、集合、容器、定时器、命令行、内存锁、对象池、配置管理、资源管理、数据校验、数据编码、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信等等。并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、模板引擎等等,支持热重启、热更新、域名绑定、TLS/HTTPS、Rewrite等特性。
GoFrame
开始得比较早,2011
年始于北京一个智能物联网平台项目,那时还没有这么多物联网的现行标准,Go
的标准库以及生态也未如此丰富。2017
年的时候GF
才开始发布测试版,2018
年1024
程序员节日的时候才发布v1.0
正式版,为Go
生态发展添砖加瓦。开源以来快速迭代、发展成长,广受开发者和企业的青睐,也有许多的开发者加入了贡献行列。GF
原本是为开发团队设计的,因此她的开发效率和可维护性做得非常好,有着很高的代码质量以及丰富的单元测试和示例,并且GF
是目前中文化文档做的最好的Golang
开发框架。
Golang
运行版本降级为了v1.11
。GoFrame
视频教程地址:
guuid
模块迁移到 github.com/gogf/guuid 作为社区模块维护,保持gf
主仓库的轻量级。guid
模块,用于高效轻量级的唯一字符串生成:https://goframe.org/util/guid/index
tool chain
gf env
命令,更优雅地查看当前Golang
环境变量信息。gf mod path
命令,用于将当前go modules
包拷贝到GOPATH
中,以便使用原始的GOPATH
方式开发项目。cli
命令进行了一些改进,提高使用体验;预编译二进制版本在部分平台下提供了upx
压缩,使得下载的文件更小。container
garray
var garray.Array
的变量定义使用方式;Walk
方法,用于自定义的数组元素处理方法;ContainsI
方法,用于大小写忽略匹配的数组元素项存在性查找;94%
;gchan
glist
var glist.List
的变量定义使用方式;99%
;gmap
Map
使用方式,支持类似于var gmap.Map
的变量定义使用方式;81%
;gset
var gset.Set
的变量定义使用方式;Walk
方法,用于自定义的集合元素处理方法;90%
;gtree
var gtree.BTree
的变量定义使用方式;90%
;gvar
69%
;database
gdb
Transaction(f func(tx *TX) error) (err error)
接口方法,用于通过闭包实现事务封装处理:https://goframe.org/database/gdb/transaction
From
接口方法,改进Table
及Model
方法的参数为不定参数,并支持通过不定参数传递表别名:https://goframe.org/database/gdb/chaining/select
DryRun
特性,支持空跑时只执行查询不执行写入/更新/删除操作:https://goframe.org/database/gdb/senior
create_at
, update_at
写入时间、更新时间字段自动填充特性:https://goframe.org/database/gdb/chaining/auto-time
delete_at
软删除特性:https://goframe.org/database/gdb/chaining/auto-time
Having
链式操作方法,用于having
条件查询:https://goframe.org/database/gdb/chaining/select
Result
结果对象增加Chunk
方法,用于自定义的数据分批处理:https://goframe.org/database/gdb/result
Schema
数据库运行时切换特性;pgsql
, mssql
, sqlite
, oracle
数据库字段类型的支持;gredis
MaxActive
连接池参数默认配置为100
,限制默认的连接数量;Conn
连接对象的Do
方法,支持对map/slice/struct
类型进行自动的json.Marshal
处理,注意获取数据时使用DoVar
方法获取:https://goframe.org/database/gredis/usage
72%
;net
ghttp
Prefix
及Retry
客户端链式操作方法;ClientMaxBodySize
的服务端配置,用于限制客户端提交的Body
大小,默认为8MB
;在涉及到上传的Server中需要增加该配置的大小,在配置文件中指定对应的大小即可,如ClientMaxBodySize="100MB"
:https://goframe.org/net/ghttp/config
SessionId
生成的随机性,提高Session
安全性:https://goframe.org/os/gsession/index
ghttp.Server
实现了标准库的http.Handler
接口,便于与其他第三方的服务如Prometheus
进行代码集成;61%
;gipv4
GetIpArray
方法,用于获取当前主机的所有IPv4地址;GetMacArray
及GetMac
方法,用于获取当前主机的MAC
地址信息;IntranetIP
方法名称为GetIntranetIp
,修改IntranetIPArray
方法名称为GetIntranetIpArray
;encoding
gjson
GetMaps
获取JSON
内部节点变量方法;NewWithTag
方法对map/struct
的处理;77%
;gyaml
yaml
解析包,解决了map[interface{}]interface{}
转换问题;error
gerror
NewfSkip
方法,用于创建skip
指定堆栈的错误对象;os
gcache
GetVar
方法,用于获得可以便捷转换为其他数据类型的"泛型"变量;Removes
方法废弃,改进Remove
方法参数为不定参数,统一使用Remove
方法删除单个/多个键值对;96%
;genv
GetVar
方法,用于获得可以便捷转换为其他数据类型的"泛型"变量;gfile
CopyDir/CopyFile
复制目录/文件方法;ScanDirFunc
方法,用于支持自定义处理回调的目录检索;64%
;glog
Context
上下文变量的日志打印特性:https://goframe.org/os/glog/context
gres
20%
压缩率,使得编译生成的二进制文件体积更小;gsession
SessionId
默认生成方法,采用guid.S
方法生成;SetId
及SetIdFunc
方法,用于自定义SessionId
及自定义的SessionId
生成方法;frame
g
g.Table
方法,用于快速创建数据库模型操作对象;i18n
gi18n
GetContent
方法,用于获取指定i18n
关键字为转译内容;74%
;test
gtest
AssertNQ
断言方法,用于强类型的不相等判断;text
gstr
SubStrRune
方法,用于支持unicode
的字符串截取;StrLimitRune
方法,用于支持unicode
的字符串截断隐藏;LenRune
方法,用于替换RuneLen
方法,统一方法命名风格;PosRune/PosIRune/PosRRune/PosRIRune
方法,用于支持unicode
的字符串左右位置查找;CompareVersionGo
方法,用于Golang
风格的版本号大小比较;75%
;util
gconv
Convert
转换方法,支持常见map
类型的转换;error
返回;63%
;grand
B
方法,用于获得随机的二进制数据;50%
;74%
;guid
guid
模块,用于高效轻量级的唯一字符串生成:https://goframe.org/util/guid/index
gutil
MapContains
方法,用于判断map中是否包含指定键名;MapDelete
方法,用于删除map中指定的键名,可以为多个键名;MapMerge
方法,用于合并两个map;MapMergeCopy
方法,用于拷贝多个map;MapContainsPossibleKey
方法,用于查找指定键名,忽略大小写及字符'-'/'_'/'.'/' '
;gvalid
i18n
来配置实现,以便支持国际化:https://goframe.org/util/gvalid/message
id-number
改为了resident-id
;luhn
改为了bank-card
;96%
;gcompress
的多文件zip
压缩问题;ghttp.Client
获取返回的过期Cookie
的问题;gres.File
对于http.File
接口的实现细节;garray.Pop*
方法的边界问题;gres
中Readdir
方法参数为0
时报错的问题;v1.12.1
(2020-03-31)大家好啊!久等啦!
由于自从上次版本的发布以来,越来越多小伙伴加入了GF
的大家庭,并提供了许多不错的建议和反馈,这次版本对其中大部分反馈进行了处理,包括大部分的改进建议和部分新特性,因此这次的版本发布时隔了两个多月。GF
非常注重代码质量以及可持续维护性,这次版本也进一步对框架大部分模块的示例、注释和单元测试用例进行了完善,目前单元测试用例数量约为1991
例,代码覆盖率为71%
,覆盖了所有模块的绝大部分主要功能。
GF
框架提供了比较常用、高质量的基础开发模块,轻量级、模块化、高性能,推荐大家阅读框架源码了解更多细节。本次发布有个别的不兼容升级,往往批量替换即可,以下change log
比较完善,建议升级前仔细阅读。
本次发布即意味下一版本开发计划的开启,欢迎更多小伙伴参与开源贡献:https://github.com/gogf/gf/projects/8
感谢大家支持!Enjoy your GF
!
GF(Go Frame)
是一款模块化、高性能、生产级的Go基础开发框架。实现了比较完善的基础设施建设以及开发工具链,提供了常用的基础开发模块,如:缓存、日志、队列、数组、集合、容器、定时器、命令行、内存锁、对象池、配置管理、资源管理、数据校验、数据编码、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信等等。并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、模板引擎等等,支持热重启、热更新、域名绑定、TLS/HTTPS、Rewrite等特性。
从GF v1.12
版本开始,框架要求的最低Golang
运行版本为v1.13
,由于Golang
新版本都是向后兼容的,因此推荐大家更新使用Golang
新版本:https://golang.google.cn/dl/
本次版本也新增了
Swagger
的工具及插件支持,另行独立发布。
tool chain
gen model
命令新增对pgsql/mssql/sqlite/oracle
的模型生成支持。gen model
命令生成模型新增公开包变量Columns
用于获得表的字段名称。net
ghttp
Server
默认关闭了平滑重启特性。开发者可以通过相应的配置选项打开。Client.Get
方法,增加可选的请求参数。Client
链式操作方法:Header
, HeaderRaw
, Cookie
, ContentType
, ContentJson
, ContentXml
, Timeout
, BasicAuth
, Ctx
:https://goframe.org/net/ghttp/client/chain
Request.GetCtx/GetCtxVar/SetCtxVar/Context
上下文变量管理方法,用于请求内部的上下文变量特性:
Request.GetUploadFile/GetUploadFiles
方法,以及UploadFile
类型,极大简化文件上传处理逻辑:https://goframe.org/net/ghttp/client/demo/upload
Request.GetPage
方法,用于便捷地获得分页对象:
Response.Redirect*
方法,增加自定义的跳转HTTP状态码参数。CORS
特性,完善跨域功能处理,并完全遵守W3C
关于OPTIONS
请求方法的规范约定:https://goframe.org/net/ghttp/cors
Request
内置变量,用于模板获得请求参数。由于GF
框架的模板引擎采用两级缓存设计,减少IO
开销的同时提升了执行效率,即使增加了大量的内置变量以及内置方法,经过大规模的性能测试,性能比其他WebServer
库相同逻辑下高出50% - 200%
的效率。Server
实验性的Plugin
特性。Server
底层路由存储、检索逻辑,优化代码,提升效率。Server
日志处理。database
gdb
Driver
驱动接口设计,方便开发者自定义驱动实现。新增Register
包方法,用于开发者注册自定义的数据库类型驱动:https://goframe.org/database/gdb/driver
GetArray
接口及实现,用于获取指定字段列的数据,构造成数组返回:https://goframe.org/database/gdb/chaining/select
InsertIgnore
接口及实现,用于写入时忽略写入冲突,仅对mysql
数据库类型有效:https://goframe.org/database/gdb/chaining/insert-save
Schema
接口及实现,用于动态切换并获取指定名称的数据库对象:https://goframe.org/database/gdb/chaining/schema
FieldsStr/FieldsExStr
模型方法,用于获取表字段,并构造成字符串返回:hhttps://goframe.org/database/gdb/chaining/fields-retrieveLockUpdate/LockShared
模型链式操作方法,用于实现悲观锁操作:https://goframe.org/database/gdb/chaining/lock
Where/Data
方法对更新参数输入方式的支持,提高灵活性:
Result
新增Array
方法,用于获得指定字段的数值,构造成数组返回:https://goframe.org/database/gdb/result
OmitEmpty
方法对Data
输入参数的过滤,当给定的Data
参数为空时间对象时,将会被过滤。MaxIdleConns=10
。gredis
MaxIdle=10
, IdleTimeout=10s
, MaxConnLifetime=30s
, Wait=true
。container
所有容器对象新增UnmarshalValue(interface{}) error
接口方法实现,用于gconv
转换时根据任意类型变量创建/设置对象内容,GF
框架的所有容器对象均实现了该接口。
garray
RemoveValue
方法,用于根据数值检索并删除元素项。FilterNil
方法,用于遍历并删除数组中的nil
元素项。FilterEmpty
方法,用于遍历并删除数组中的空值元素项,空值包括:0, nil, false, "", len(slice/map/chan) == 0
。Set/Fill/InsertBefore/InsertAfter
方法严谨性,将原有的链式操作返回值对象修改为error
返回值。Get/Remove/PopRand/PopLeft/PopRight/Rand
方法严谨性,增加found
的bool
返回值,标识当前方法是否有数据返回,当空数组或者操作越界时found
返回值为false
。Rands
方法原有逻辑,保证按照给定大小返回随机数组。gpool
int
类型表示毫秒,新版本为time.Duration
类型使得时间控制更灵活。os
glog
Rotation
日志滚动切分特性,新增按照文件大小或过期时间进行日志切分,并支持切分文件数量限制、对日志文件进行自动压缩、可自定义压缩级别(1-9
)、支持对切分文件过期时间清理:https://goframe.org/os/glog/rotate
LevelPrefixes
特性,支持对日志级别的前缀名称进行自定义:https://goframe.org/os/glog/level
SetLevelStr
方法,并增加按照字符串进行日志级别配置的特性:
SetDefaultLogger
包方法,用于设置全局默认的Logger
对象。gres
15MB
的网站静态资源文件(css/js/html
等),资源文件打包后约为4MB
左右:https://goframe.org/os/gres/index
gcfg
toml
配置文件在配置目录中存在时,将自动设置该单例对象的默认配置文件为该文件。例如:g.Cfg("redis")
获取到的单例对象将会默认去检索并设置默认的配置文件为redis.toml
,当该文件不存在时,则使用默认的配置文件(config.toml
):https://goframe.org/net/ghttp/config
gview
concat
内置字符串拼接方法:https://goframe.org/os/gview/function/buildin
gfile
SelfPath
获取当前执行文件路径方法,提高执行效率。Join
文件路径连接方法,防止多余的路径连接符号。GetContents
文件内容获取方法执行效率,降低内存占用。StrToSize
方法,用于将大小字符串转换为字节数字,大小字符串例如10m
, 5KB
, 1.25Gib
等。ReadLines/ReadByteLines
方法,用于按行读取指定文件内容,并给定读取回调函数。gtime
gtime.Time
对象实现,统一字符串打印时间格式为Y-m-d H:i:s
,如:2020-01-01 12:00:00
。gcmd
strict
参数,用于设置当前解析是否严格解析,严格解析下如果给定了非法的选项,将会停止解析并返回错误。默认情况下为非严格解析。genv
Remove
删除环境变量键值对方法,增加对多个键值对环境变量的删除。gfpool
gfsnotify
Watcher
对象创建失败时,直接panic
。gproc
SearchBinaryPath
方法。Process.Kill
方法在windows
及*niux
平台下不同表现的处理。encoding
gjson
frame
g
IsNil
方法,用于判断当前给定的变量是否为nil
,该方法有可能会使用到反射来实现判断。IsEmpty
方法,用于判断当前给定的变量是否为空
,该方法优先使用断言判断但有可能会使用到反射来实现判断。空值包括:0, nil, false, "", len(slice/map/chan) == 0
。SetServerGraceful
方法,转而统一交给Server
的配置来管理。gins
gmvc
M
类型,为*gdb.Model
的别名简称,用于工具链自动生成模型中的M
属性。text
gstr
HasPrefix/HasSuffix
方法。OctStr
方法,用于将八进制字符串转换为其对应的unicode
字符串,例如转换为中文。常用于gRPC
底层通信编码中。debug
gdebug
TestDataPath
方法,用于当前包单元测试中获得当前包中testdata
目录的绝对路径。util
gconv
String
字符串转换方法,增加对time.Time/*time.Time/gtime.Time
类型的内置支持。Map/Struct
转换方法,增加对一些特殊场景的细节处理。经过大规模的使用,大量的反馈改进,不断完善了细节。Struct
转换方法,增加对UnmarshalValue(interface{}) error
接口的支持。grand
Str
方法更名为S
方法,用以获取指定长度的随机字符串、数字,并增加symbol
参数,指定是否可以随机返回特殊可见字符。Str
方法,用于从指定的字符串字符中随机获取指定长度的字符串。该方法同时支持unicode
字符串,例如:中文:https://goframe.org/util/grand/index
Symbols
方法,用于随机返回指定场孤独的特殊可见字符:https://goframe.org/util/grand/index
gvalid
unicode
字符串的支持,例如:中文。Server
的视图对象配置失效问题。Server
中间件在中间件panic
情况下,忽略Middleware.Next
方法控制,导致鉴权中间件失效的问题。gudp.Server
在请求包大小超过64bytes
时的断包问题,并调整默认缓冲区大小为1024byte
,开发者可自定义缓冲区大小。gfile.MTimeMillisecond
方法返回错误的文件修改毫秒时间戳。gconv.Int64
对负数转换的支持。v1.11.2
(2020-01-14)GF(Go Frame)
https://goframe.org 是一款模块化、高性能、生产级的Go基础开发框架。实现了比较完善的基础设施建设,包括常用的核心开发组件, 如:缓存、日志、文件、时间、队列、数组、集合、字符串、定时器、命令行、文件锁、内存锁、对象池、连接池、资源管理、数据校验、数据编码、文件监控、 定时任务、数据库ORM、TCP/UDP组件、进程管理/通信、并发安全容器等等。 并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、配置管理、模板引擎等等, 支持热重启、热更新、多域名、多端口、多服务、HTTPS、Rewrite等特性。
GF
有着丰富的基础模块、完善的工具链、详尽的开发文档。开源近两年以来,GF
得到越来越多小伙伴的肯定和支持,从寂寂无名到现在被广泛应用于微服务、物联网、区块链、电商系统、银行系统等企业级的生产项目中,经历了百万级、千万级项目的考验,2019年度被码云gitee
评选为GVP
最有价值开源项目。GF
正在快速地成长中,目前保持着1-2个月迭代版本的发布规律,社区活跃,欢迎加入GF
大家庭。
最后,祝大家2020新年快乐,鼠年大吉!
GF
工具链更新:https://goframe.org/toolchain/cli
gf run
热编译运行命令;gf docker
Docker镜像编译命令;gf gen model
强大的模型自动生成命令;gf build
命令增加对配置文件配置支持;ORM
新特性:
prefix
数据表前缀支持:https://goframe.org/database/gdb/config
Schema
数据库对象并改进数据库切换特性:https://goframe.org/database/gdb/chaining/schema
WherePri
方法,用于自动识别主键的条件方法:https://goframe.org/database/gdb/chaining/select
container
garray
New*ArrayRange
方法,用于初始化创建指定数值范围的数组。Iterator*
方法,用于数组项元素回调遍历。gvar
MapStrStr
、MapStrStrDeep
方法实现。net
ghttp
Content-Type
识别功能。Request
对象增加Parse
方法,用于快捷的对象转换即参数校验。Request.GetPost*
方法全部标记为deprecated
,统一客户端参数提交方式为QueryString
, Form
, Body
。Response
模板解析时的Get
/Post
内置变量,新增Query
, Form
, Request
内置变量:https://goframe.org/net/ghttp/response/template
Response.WriteJson*
及Response.WriteXml*
方法,增加对string
, []byte
类型参数的支持。Server
新增GetRouterArray
方法,用于向应用层暴露并获取Server
的路由列表。Server
新增Use
方法,该方法为BindMiddlewareDefault
的别名,用以全局中间件的注册。Server
新增RouteOverWrite
配置项,用于控制是否在注册路由冲突时自动覆盖,默认关闭并提示。Server
新增Graceful
配置项,用于在单服务场景下控制平滑重启特性的开启/关闭,默认开启。gtcp
30
秒修改为10
秒。database
gdb
As
数据表别名方法。DB
数据库对象切换方法。TX
链式操作事务支持方法。os
gcfg
GetMapStrStr
方法。gcmd
strict
严格参数,默认严格解析,不存在指定参数/选项名称时则报错返回。genv
Remove
方法支持多个环境变量的删除。gfile
TempDir
临时目录获取方法,在*nix
系统下默认为/tmp
目录。ReadLines
, ReadByteLines
方法,用以按行回调读取文件内容。Copy*
方法,用以文件/目录的拷贝,支持递归。Replace*
方法,用以目录下的文件内容替换,支持递归。Scan*
方法,用以检索并返回指定目录下的所有文件/目录,支持文件模式指定,支持递归。gproc
Shell
命令文件检索逻辑。gtime
Time
对象的时间戳方法Second
, Millisecond
, Microsecond
, Nanosecond
标记为废除,
并新增Timestamp
, TimestampMilli
, TimestampMicro
, TimestampNano
替换。gview
encode
, decode
HTML编码/解码模板函数。concat
字符串拼接模板函数。dump
模板函数,功能类似于g.Dump
方法。AutoEncode
配置项,用于自动转码输出的HTML
内容,常用于防止XSS
,默认关闭。需要注意的是该特性并不会影响include
内置函数: https://goframe.org/os/gview/xss
crypto
gmd5
MustEncrypt
, MustEncryptBytes
, MustEncryptString
, MustEncryptFile
方法。gsha1
MustEncryptFile
方法encoding
gbase64
MustEncodeFile
, MustEncodeFileToString
, MustDecode
, MustDecodeToString
方法。gjson
/gparser
GetMapStrStr
方法。Must*
方法,用于指定数据格式的转换失败时产生panic
错误,而不会返回error
参数。util
gconv
Convert
方法增加对[]int32
, []int64
, []uint
, []uint32
, []uint64
, []float32
, []float64
数据类型的转换支持。String
字符串转换方法对指针参数的支持。Map*
Map转换方法的代码结构及性能。Floats
, Float32s
, Float64s
对[]float32
, []float64
类型转换方法。Ints
, Int32s
, Int64s
对[]int
, []int32
, []int64
类型转换方法。Uints
, Uint32s
, Uint64s
对[]uint
, []uint32
, []uint64
类型转换方法。frame
gins
panic
错误。/user//index
的兼容支持。gtcp
/gudp
在数据接收时的间隔时间单位问题。gfile
/gspath
/gfsnotify
包对文件的存在性判断不严谨问题。gproc.Kill
方法在windows
系统下的运行阻塞问题。gstr.TrimLeftStr
/gstr.TrimRightStr
在被替换字符串长度小于替换字符串长度时的数组溢出问题。v1.10.0
(2019-12-05)各位gfer
久等了,较上一次发布时间过去已有两个多月了,这段时间GF
也在不断地迭代改进,细节比较多,拟了个大概,以下是release log
。
另外,GoFrame
也参加了2019最受欢迎中国开源软件评选投票,明天就结束了,欢迎为GF
投票啊:https://www.oschina.net/project/top_cn_2019 网页可以投一票,微信也可以投一票。
Web Server
新特性:
Session
增加内置的多种Storage
实现:
container
容器增加JSON
数据格式的Marshal
/UnMarshal
接口实现:
guuid
模块,用于通用的UUID
生成:https://goframe.org/util/guuid/index
net
ghttp
Server
增加对Logger
日志对象的配置;Server
开放了GetRouterMap
方法,用于获得当前服务的路由列表信息,使得开发者可以更方便地实现自定义权限管理;Server
配置管理优化;Client
客户端对象进行了大量的改进工作;Client
客户端对象增加多文件上传功能;Request
对象增加GetError
方法,用于获取当前处理错误;Request
对象增加独立的视图对象及视图变量绑定功能,使得每个请求可以独立视图管理,也可以通过中间件切换请求对象的视图对象。默认情况下该功能关闭,视图解析时使用的是Server
对象的视图对象;Response
对象的CORS
功能;Response.WriteTplDefault
方法,用于解析并返回默认的模板内容;gipv4
/gipv6
gtcp
/gudp
database
gdb
sql.ErrNoRows
错误返回,保留Struct
/Structs
/Scan
方法在操作数据为空的该错误返回;Where
方法增加对gmap
数据类型支持,包括顺序性的ListMap
/TreeMap
等等;Cache
的缓存时间参数类型修改为time.Duration
;Record
/Result
的数据类型转换方法名称,原有的转换方法标记为deprecated
;Record
/Result
查询结果类型增加IsEmpty
方法,用于判断结果集是否为空;Record
类型增加GMap
方法,用于将查询记录转换为gmap
类型;Option
/OptionOmitEmpty
方法,用于输入参数过滤,包括Data
参数及Where
参数:https://goframe.org/database/gdb/empty
FieldsEx
:https://goframe.org/database/gdb/senior
gredis
os
gcache
interface{}
类型调整为了time.Duration
类型,因此不再兼容之前的int
参数类型,以保证更好的性能;gfcache
gcache
组件的缓存时间参数类型的变更,因此该组件的时间参数也变更为了time.Duration
类型;gcfg
Available
方法,用以判断配置是否有效;gfile
Chdir
方法,用于工作目录切换;gtime
JSON
数据格式的Marshal
/UnMarshal
接口实现;container
gmap
MapStrAny
方法,用于常见map
类型的转换;MapCopy
方法,用于底层map
数据复制;FilterEmpty
方法,用于map
空值过滤;Pop
/Pops
方法,用于随机返回map
中的数据项(并删除);Replace
方法,用于给定的map
数据覆盖底层map
数据项;garray
Interfaces
转换方法,返回[]interface{}
类型;SetComparator
方法用户自定义修改比较器;glist
NewFrom
方法,基于给定的[]interface{}
变量创建链表;Join
方法,用于将链表项使用给定字符串连接为字符串返回;gset
AddIfNotExistFunc
/AddIfNotExistFuncLock
方法;gtree
Replace
方法,用于更新现有树的数据项;gtype
gvar
Ints
/Uints
类型转换方法;crypto
gmd5
gsha1
text
gstr
SplitAndTrim
方法,将SplitAndTrimSpace
标记为deprecated
;TrimStr
方法;debug
gdebug
CallerFileLineShort
/FuncPath
/FuncName
方法;encoding
gbase64
EncodeToString
/EncodeFile
/EncodeFileToString
/DecodeToString
方法;gjson
frame
g
/gins
CreateVar
方法;util
gconv
Uints
/SliceUint
类型转换方法;UnsafeStrToBytes
/UnsafeBytesToStr
高性能的类型转换方法;MapStrAny
接口方法的支持,用于常见map
类型的转换;gvalid
luhn
银行卡号的校验功能;grand
WebSocket
关闭时的hijacked
报错问题:https://github.com/gogf/gf/issues/381
Nginx
后默认情况下的Cookie
域名设置问题;gconv.Struct
在属性为[]struct
并且输入属性参数为空时的转换失败问题:https://github.com/gogf/gf/issues/405
v1.9.3
(2019-09-24)该版本实际为v2.0
的大版本发布,为避免go module
机制严格要求v2
版本以上需要修改import
并加上v2
后缀,因此使用了v1.9
版本进行发布。
gf
命令行开发辅助工具:https://goframe.org/toolchain/cli
gres
资源管理器模块:https://goframe.org/os/gres/index
Session
功能,新增gsession
模块,WebServer
默认使用文件存储Session
:https://goframe.org/net/ghttp/session
WebServer
新增中间件特性,并保留原有的HOOK设计,两者都可实现请求拦截、预处理等等特性:https://goframe.org/net/ghttp/router/middleware
gi18n
国际化管理模块:https://goframe.org/i18n/gi18n/index
gini
模块:https://goframe.org/encoding/gini/index
WebServer
新增更便捷的层级路由注册方式:https://goframe.org/net/ghttp/group/level
gcmd
命令行参数解析模块重构,增加Parser
解析对象:https://goframe.org/os/gcmd/index
gdebug
模块,用于堆栈信息获取/打印:https://goframe.org/debug/gdebug/index
1.x
版本中已经被标记为deprecated
的方法;container
分类的容器模块,将默认并发安全参数调整为默认非并发安全;third
目录,统一使用go module
管理包依赖;g
目录中的模块移出到框架主目录,原有的g
模块移动到frame/g
目录;geg
示例代码目录名称修改为.example
;ghttp
Request
参数解析方式:https://goframe.org/net/ghttp/request
Origin
设置及校验功能:https://goframe.org/net/ghttp/cors
Cookie
及Session
的TTL
配置数据类型修改为time.Duration
;Header/Cookie
传递SessionId
;ConfigFromMap/SetConfigWithMap
方法,支持通过map
参数设置WebServer;CORS
配置,增加对常见Header
参数的默认支持;IsExitError
方法,用于开发者自定义处理recover
错误处理时,过滤框架本身自定义的非异常错误;SetSessionStorage
配置方法,用于开发者自定义Session
存储;ghttp.Request
新增更多的参数获取方法;gdb
Quote
)功能;slice
参数的支持;SetLogger
方法用于开发者自定义数据库的日志打印;Master/Slave
方法,开发者可自主选择数据库操作执行的主从节点;mssql/pgsql/oracle
的单元测试;debug
模式支持完整带参数整合的SQL语句调试打印;glog
Default
方法用于获取默认的Logger
对象;StackWithFilter
方法用于自定义堆栈打印过滤;gfile
Get/PutBinContents
修改为Get/PutBytes
;ScanDirFile
方法,用于仅检索文件目录,支持递归检索;gview
SetI18n
方法用于设置视图对象自定义的gi18n
国际化对象;gres
资源管理器的内置支持;gcompress
zip
算法的文件/目录的压缩/解压方法;gconv
[]byte
数据类型参数的支持;Unsafe
转换方法,开发者可在特定场景下使用,提高转换效率;MapDeep/StructDeep/StructsDeep
方法,支持递归struct
转换;gjson/gparser
LoadJson/LoadXml/LoadToml/LoadYaml/LoadIni
方法用于自定义的数据类型内容加载;gerror
gmap/garray/gset/glist/gvar
garray.StringArray
为garray.StrArray
;gdes
gstr
Camel/Snake
相关命名转换方法;genv
gvalid
校验struct
时的tag
自定义错误失效的问题;gcfg
配置管理模块在特定情况下的内容类型自动识别失败问题;gqueue
在用户主动关闭队列时的并发安全问题;session
在开发者设置的TTL
过大时的整型变量溢出问题;此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。