GF框架封装了一些常用的数据类型以及对象获取方法,通过g.*方法获取。

g是一个强耦合的模块,目的是为开发者在对频繁使用的类型/对象调用时提供便利。

使用方式

  1. import "github.com/gogf/gf/frame/g"

数据类型

常用数据类型别名。

  1. // 泛型
  2. type Var = gvar.Var
  3. // 常用Map类型
  4. type Map = map[string]interface{}
  5. type MapAnyAny = map[interface{}]interface{}
  6. type MapAnyStr = map[interface{}]string
  7. type MapAnyInt = map[interface{}]int
  8. type MapStrAny = map[string]interface{}
  9. type MapStrStr = map[string]string
  10. type MapStrInt = map[string]int
  11. type MapIntAny = map[int]interface{}
  12. type MapIntStr = map[int]string
  13. type MapIntInt = map[int]int
  14. // 常用Slice Map类型
  15. type List = []Map
  16. type ListAnyStr = []map[interface{}]string
  17. type ListAnyInt = []map[interface{}]int
  18. type ListStrAny = []map[string]interface{}
  19. type ListStrStr = []map[string]string
  20. type ListStrInt = []map[string]int
  21. type ListIntAny = []map[int]interface{}
  22. type ListIntStr = []map[int]string
  23. type ListIntInt = []map[int]int
  24. // 常用Slice类型
  25. type Slice = []interface{}
  26. type SliceAny = []interface{}
  27. type SliceStr = []string
  28. type SliceInt = []int
  29. // 常用Slice类型(别名)
  30. type Array = []interface{}
  31. type ArrayAny = []interface{}
  32. type ArrayStr = []string
  33. type ArrayInt = []int

常用对象

常用对象往往通过单例模式进行管理,可以根据不同的单例名称获取对应的对象实例,并在对象初始化时会自动检索获取配置文件中的对应配置项,具体配置项请查看对应对象的章节介绍。

注意事项:在运行时阶段,每一次通过g模块获取单例对象时都会有内部全局锁机制来保证操作和数据的并发安全性,原理性上来讲在并发量大的场景下会存在锁竞争的情况,但绝大部分的业务场景下开发者均不需要太在意锁竞争带来的性能损耗。此外,开发者也可以通过将获取到的单例对象保存到特定的模块下的内部变量重复使用,以此避免运行时锁竞争情况。

HTTP客户端对象

  1. func Client() *ghttp.Client

创建一个新的HTTP客户端对象。

Validator校验对象

  1. func Validator() *gvalid.Validator

创建一个新的数据校验对象。

(单例) 配置管理对象

  1. func Cfg(name ...string) *gcfg.Config

该单例对象将会自动读取默认配置文件config.toml并缓存,配置文件在外部被修改时将会自动刷新缓存。从GF v1.12版本开始,为方便多文件场景下的配置文件调用,简便使用并提高开发效率,因此当给定的单例名称对应的toml配置文件在配置目录中存在时,将自动设置该单例对象的默认配置文件为该文件。

例如:g.Cfg("redis")获取到的单例对象将会默认去检索会自动检索redis.tomlredis.yamlredis.jsonredis.iniredis.xml,如果检索成功那么将该文件加载到内存缓存中,下一次将会直接从内存中读取;当该文件不存在时,则使用默认的配置文件(config.toml)。

(单例) 日志管理对象

  1. func Log(name ...string) *glog.Logger

该单例对象将会自动读取默认配置文件中的logger配置项,并只会初始化一次日志对象。

(单例) 模板引擎对象

  1. func View(name ...string) *gview.View

该单例对象将会自动读取默认配置文件中的viewer配置项,并只会初始化一次模板引擎对象。内部采用了懒初始化设计,获取模板引擎对象时只是创建了一个轻量的模板管理对象,只有当解析模板文件时才会真正初始化。

(单例) WEB Server

  1. func Server(name ...interface{}) *ghttp.Server

该单例对象将会自动读取默认配置文件中的server配置项,并只会初始化一次Server对象。

(单例) TCP Server

  1. func TcpServer(name ...interface{}) *gtcp.Server

(单例) UDP Server

  1. func UdpServer(name ...interface{}) *gudp.Server

(单例) 数据库ORM对象

  1. func DB(name ...string) *gdb.Db

该单例对象将会自动读取默认配置文件中的database配置项,并只会初始化一次DB对象。

此外,可以通过以下方法在默认数据库上创建一个Model对象:

  1. func Model(tables string, db ...string) *gdb.Model

(单例) Redis客户端对象

  1. func Redis(name ...string) *gredis.Redis

该单例对象将会自动读取默认配置文件中的redis配置项,并只会初始化一次Redis对象。

(单例) 资源管理对象

  1. func Res(name ...string) *gres.Resource

(单例) 国际化管理对象

  1. func I18n(name ...string) *gi18n.Manager

Content Menu