一、数据类型:
处理go基础数据类型如int、float、string、bool、interface{}等类型外,为了代码简洁框架封装几个常用的数据类型方便大家调用。调用方式:gf.类型
1.通用类型
类型 | 说明 |
gf.GinCtx | Gin上下文 |
gf.GinObj | Gin返回数据类型 |
gf.Var | 通用的变量接口 |
gf.Ctx | 上下文类型 |
go.Meta | 元数据 |
2.Map类型
这是各种数据类型组合成的map类型,调用是gf.类型,例如:gf.Map{"name":"张三","age":25}
类型 | 对应原来组合类型 | 说明 |
Map | map[string]interface{} | key为string、value为interface{}的数据 |
MapAnyAny | map[interface{}]interface{} | key为interface{}、value为interface{}的数据 |
MapAnyStr | map[interface{}]string | key为interface{}、value为string的数据 |
MapAnyInt | map[interface{}]int | key为interface{}、value为int的数据 |
MapStrStr | map[string]string | key为string、value为string的数据 |
MapStrInt | map[string]int | key为string、value为int的数据 |
MapIntAny | map[int]interface{} | key为int、value为interface{}的数据 |
MapIntStr | map[int]string | key为int、value为string的数据 |
MapIntInt | map[int]int | key为int、value为int的数据 |
MapAnyBool | map[interface{}]bool | key为interface{}、value为bool的数据 |
MapStrBool | map[string]bool | key为string、value为bool的数据 |
MapIntBool | map[int]bool | key为int、value为bool的数据 |
3.List类型
这种数据类型是由map类型组合的
类型 | 对应原来组合类型 | 说明 |
List | []map[string]interface{} | key为string、value为interface{}的列表数据 |
ListAnyAny | []map[interface{}]interface{} | key为interface{}、value为interface{}的列表数据 |
ListAnyStr | []map[interface{}]string | key为interface{}、value为string的列表数据 |
ListAnyInt | []map[interface{}]int | key为interface{}、value为int的列表数据 |
ListStrStr | []map[string]string | key为string、value为string的列表数据 |
ListStrInt | []map[string]int | key为string、value为int的列表数据 |
ListIntAny | []map[int]interface{} | key为int、value为interface{}的列表数据 |
ListIntStr | []map[int]string | key为int、value为string的列表数据 |
ListIntInt | []map[int]int | key为int、value为int的列表数据 |
ListAnyBool | []map[interface{}]bool | key为interface{}、value为bool的列表数据 |
ListStrBool | []map[string]bool | key为string、value为bool的列表数据 |
ListIntBool | []map[int]bool | key为int、value为bool的列表数据 |
4.Slice类型
Slice类型即切片类型,是对数组一个连续片段的引用, 数组的长度不可改变,在特定场景中这样的集合就不太适用,切片("动态数组")与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。例如:gf.SliceInt{1,2,3 }。
类型 | 对应原来组合类型 | 说明 |
Slice | []interface{} | interface{}的切片数据 |
SliceStr | []string | string的切片数据 |
SliceInt | []int | int的切片数据 |
二、类型转换
框架给大家提供一些常用的类,any是interface{}类型。
方法 | 功能说明 |
gf.Int() | any数据类型转成int |
gf.Int8() | any数据类型转成int8 |
gf.Int16() | any数据类型转成int16 |
gf.Int32() | any数据类型转成int32 |
gf.Int64() | any数据类型转成int64 |
gf.Uint() | any数据类型转成uint |
gf.Uint8() | any数据类型转成uint8 |
gf.Uint16() | any数据类型转成uint16 |
gf.Uint32() | any数据类型转成uint32 |
gf.Uint64() | any数据类型转成uint64 |
gf.Float32() | any数据类型转成float32 |
gf.Float64() | any数据类型转成float64 |
gf.Bool() | any数据类型转成bool |
gf.String() | any数据类型转成string |
gf.Bytes() | any数据类型转成 []byte |
gf.Strings() | any数据类型转成 []string 数组 |
gf.Ints() | any数据类型转成 []int 数组 |
gf.Floats() | any数据类型转成 []float64 数组 |
gf.Interfaces() | any数据类型转成 []interface{} 数组 |
gf.StringToJSON() | 将字符串转JSON编码,返回interface{}类型 |
gf.JSONToString() | 将JSON编码转为字符串,返回string |
三、ORM返回数据字段数据类型转换
我们在操作数据库获取数据时,要对返回数据进行操作,需要对数据类型转换再操作,如需要做运算 得把数据数量类型转成同一类型才能进行操作。
示例:data, err := gf.Model("createcode_product").Where("id", id).Find(),获取int类型 price:=data["price"].Int(),获取一个int数据类型的价格。
方法 | 功能说明 |
Int() | 转成int |
Int8() | 转成int8 |
Int16() | 转成int16 |
Int32() | 转成int32 |
Int64() | 转成int64 |
Uint() | 转成uint |
Uint8() | 转成uint8 |
Uint16() | 转成uint16 |
Uint32() | 转成uint32 |
Uint64() | 转成uint64 |
Float32() | 转成float32 |
Float64() | 转成float64 |
Time("Y-m-d H:i:s") | 转成time.Time |
Duration() | 转成time. Duration |
Val() | 转成 通用val |
Bytes() | 转成 []byte |
String() | 转成string |
Bool() | 转成Bool |
补充说明如果你从上面查询的data取出数据做处理,然后想重新赋值给data,那得用gf.VarNew()方法赋值,否则报类型不匹配错误,赋值例子:data["price"]=gf.VarNew(12)
本文内容对应开发文档:Gofly文档-Go全栈开发社区