GF
GoFrame
框架封装了一些常用的数据类型以及对象获取方法,通过g.*
方法获取。
Tip |
---|
g 是一个强耦合的模块,目的是为开发者在对频繁使用的类型/对象调用时提供便利。
|
使用方式:
Code Block |
---|
|
import "github.com/gogf/gf/v2/frame/g" |
数据类型
常用数据类型别名。
// 泛型
type Code Block |
---|
|
type (
Var = gvar.Var |
// 常用Map类型
type Map // Var is a universal variable interface, like generics.
Ctx = context.Context // Ctx is alias of frequently-used context.Context.
)
type (
Map = map[string]interface{} |
type MapAnyAny // Map is alias of frequently-used map type map[string]interface{}.
MapAnyAny = map[interface{}]interface{} |
type MapAnyStr // MapAnyAny is alias of frequently-used map type map[interface{}]interface{}.
MapAnyStr = map[interface{}]string |
type MapAnyInt // MapAnyStr is alias of frequently-used map type map[interface{}]string.
MapAnyInt = map[interface{}]int |
type MapStrAny // MapAnyInt is alias of frequently-used map type map[interface{}]int.
MapStrAny = map[string]interface{} |
type MapStrStr // MapStrAny is alias of frequently-used map type map[string]interface{}.
MapStrStr = map[string]string |
type MapStrInt // MapStrStr is alias of frequently-used map type map[string]string.
MapStrInt = map[string]int |
type MapIntAny // MapStrInt is alias of frequently-used map type map[string]int.
MapIntAny = map[int]interface{} |
type MapIntStr // MapIntAny is alias of frequently-used map type map[int]interface{}.
MapIntStr = map[int]string |
type MapIntInt // MapIntStr is alias of frequently-used map type map[int]string.
MapIntInt = map[int]int |
// 常用Slice Map类型
type List = []Map
type ListAnyStr = []map[interface{}]string
type ListAnyInt = []map[interface{}]int
type ListStrAny = []map[string]interface{}
type ListStrStr = []map[string]string
type ListStrInt = []map[string]int
type ListIntAny = []map[int]interface{}
type ListIntStr = []map[int]string
type ListIntInt = []map[int]int
// 常用Slice类型
type Slice = []interface{}
type // MapIntInt is alias of frequently-used map type map[int]int.
MapAnyBool = map[interface{}]bool // MapAnyBool is alias of frequently-used map type map[interface{}]bool.
MapStrBool = map[string]bool // MapStrBool is alias of frequently-used map type map[string]bool.
MapIntBool = map[int]bool // MapIntBool is alias of frequently-used map type map[int]bool.
)
type (
List = []Map // List is alias of frequently-used slice type []Map.
ListAnyAny = []MapAnyAny // ListAnyAny is alias of frequently-used slice type []MapAnyAny.
ListAnyStr = []MapAnyStr // ListAnyStr is alias of frequently-used slice type []MapAnyStr.
ListAnyInt = []MapAnyInt // ListAnyInt is alias of frequently-used slice type []MapAnyInt.
ListStrAny = []MapStrAny // ListStrAny is alias of frequently-used slice type []MapStrAny.
ListStrStr = []MapStrStr // ListStrStr is alias of frequently-used slice type []MapStrStr.
ListStrInt = []MapStrInt // ListStrInt is alias of frequently-used slice type []MapStrInt.
ListIntAny = []MapIntAny // ListIntAny is alias of frequently-used slice type []MapIntAny.
ListIntStr = []MapIntStr // ListIntStr is alias of frequently-used slice type []MapIntStr.
ListIntInt = []MapIntInt // ListIntInt is alias of frequently-used slice type []MapIntInt.
ListAnyBool = []MapAnyBool // ListAnyBool is alias of frequently-used slice type []MapAnyBool.
ListStrBool = []MapStrBool // ListStrBool is alias of frequently-used slice type []MapStrBool.
ListIntBool = []MapIntBool // ListIntBool is alias of frequently-used slice type []MapIntBool.
)
type (
Slice = []interface{} // Slice is alias of frequently-used slice type []interface{}.
SliceAny = []interface{} |
type // SliceAny is alias of frequently-used slice type []interface{}.
SliceStr = []string |
type // SliceStr is alias of frequently-used slice type []string.
SliceInt = []int |
常用Slice类型(别名)
type Array SliceInt is alias of frequently-used slice type []int.
)
type (
Array = []interface{} |
type // Array is alias of frequently-used slice type []interface{}.
ArrayAny = []interface{} |
type // ArrayAny is alias of frequently-used slice type []interface{}.
ArrayStr = []string |
type ArrayInt = []int
// ArrayStr is alias of frequently-used slice type []string.
ArrayInt = []int // ArrayInt is alias of frequently-used slice type []int.
) |
常用对象
常用对象往往通过单例模式
进行管理,可以根据不同的单例名称获取对应的对象实例。并在对象初始化时会自动检索获取配置文件中的对应配置项,具体配置项请查看对应对象的章节介绍。进行管理,可以根据不同的单例名称获取对应的对象实例,并在对象初始化时会自动检索获取配置文件中的对应配置项,具体配置项请查看对应对象的章节介绍。
Tip |
---|
注意事项:在运行时阶段,每一次通过g 模块获取单例对象时都会有内部全局锁机制来保证操作和数据的并发安全性,原理性上来讲在并发量大的场景下会存在锁竞争的情况,但绝大部分的业务场景下开发者均不需要太在意锁竞争带来的性能损耗。此外,开发者也可以通过将获取到的单例对象保存到特定的模块下的内部变量重复使用,以此避免运行时锁竞争情况。 |
HTTP
客户端对象
Code Block |
---|
|
func Client() *ghttp.Client |
创建一个新的HTTP
客户端对象。
Validator
校验对象
Code Block |
---|
|
func Validator() *gvalid.Validator |
创建一个新的数据校验对象。
(单例) 配置管理对象
Code Block |
---|
|
func Cfg(name ...string) *gcfg.Config |
该单例对象将会自动按照文件后缀toml/yaml/yml/json/ini/xml/properties
文自动检索配置文件。默认情况下会自动检索以下配置文件:
config
config.toml
config.yaml
config.yml
config.json
config.ini
config.xml
config.properties
并缓存,配置文件在外部被修改时将会自动刷新缓存。
为方便多文件场景下的配置文件调用,简便使用并提高开发效率,单例对象在创建时将会自动使用单例名称进行文件检索。例如:
该单例对象将会自动读取默认配置文件config.toml
并缓存,配置文件在外部被修改时将会自动刷新缓存。从GF v1.12
版本开始,为方便多文件场景下的配置文件调用,简便使用并提高开发效率,因此当给定的单例名称对应的toml
配置文件在配置目录中存在时,将自动设置该单例对象的默认配置文件为该文件。
例如:g.Cfg("redis")
获取到的单例对象将会默认去检索会自动检索获取到的单例对象将默认会自动检索以下文件:
、、、、redis.xml
redis.properties
如果检索成功那么将该文件加载到内存缓存中,下一次将会直接从内存中读取;当该文件不存在时,则使用默认的配置文件(,如果检索成功那么将该文件加载到内存缓存中,下一次将会直接从内存中读取;当该文件不存在时,则使用默认的配置文件(config.toml
)。
(单例) 日志管理对象
Code Block |
---|
|
func Log(name ...string) *glog.Logger |
该单例对象将会自动读取默认配置文件中的logger
配置项,并只会初始化一次日志对象。
(单例) 模板引擎对象
Code Block |
---|
|
func View(name ...string) *gview.View |
该单例对象将会自动读取默认配置文件中的viewer
配置项,并只会初始化一次模板引擎对象。内部采用了懒初始化
设计,获取模板引擎对象时只是创建了一个轻量的模板管理对象,只有当解析模板文件时才会真正初始化。
(单例) WEB Server
Code Block |
---|
|
func Server(name ...interface{}) *ghttp.Server |
该单例对象将会自动读取默认配置文件中的server
配置项,并只会初始化一次Server
对象。
(单例) TCP Server
Code Block |
---|
|
func TcpServer(name ...interface{}) *gtcp.Server |
(单例) UDP Server
Code Block |
---|
|
func UdpServer(name ...interface{}) *gudp.Server |
(单例) 数据库ORM
对象
Code Block |
---|
|
func DB(name ...string) *gdb.Db |
该单例对象将会自动读取默认配置文件中的database
配置项,并只会初始化一次DB
对象。
此外,可以通过以下方法在默认数据库上创建一个Model
对象:
Code Block |
---|
|
func Model(tables string, db ...string) *gdb.Model |
(单例) Redis
客户端对象
Code Block |
---|
|
func Redis(name ...string) *gredis.Redis |
该单例对象将会自动读取默认配置文件中的redis
配置项,并只会初始化一次Redis
对象。
(单例) 资源管理对象
Code Block |
---|
|
func Res(name ...string) *gres.Resource |
(单例) 国际化管理对象
Code Block |
---|
|
func I18n(name ...string) *gi18n.Manager |