# README
mtype
功能支持
支持类型
// Define const.
const (
TInt = "Int" // 类型: int
TByte = "Byte" // 类型: byte
TRune = "Rune" // 类型: rune
TFloat64 = "Float64" // 类型: float64
TString = "String" // 类型: string
TBool = "Bool" // 类型: bool
TIntSlice = "IntSlice" // 类型: []int
TByteSlice = "ByteSlice" // 类型: []byte
TStringSlice = "StringSlice " // 类型: []string
TAnySlice = "AnySlice " // 类型: []interface{}
TStringMapSlice = "StringMapSlice" // 类型: []map[string]string
TAnyMapSlice = "AnyMapSlice" // 类型: []map[string]interface{}
TStringMap = "StringMap" // 类型: map[string]string
TAnyMap = "AnyMap" // 类型: map[string]interface{}
TError = "Error" // 类型: error
TNil = "Nil" // 类型: nil
TUnknown = "unknown" // 类型: unknown
)
获取类型 (对应上面定义的类型字符串)
func GetType(value interface{}) string
转换成对应类型 参数 src:被转换的类型值 dstType:将要转换的类型(参考上面定义类型)
func ToType(src interface{}, dstType string) interface{}
// 示例:
mtype.ToType("10", mtype.TInt) // 字符串10转换成int
Note: 该方法为底层转换方法, 转化后的值还是以 interface{} 形式返回. 如要实现真正转换, 请参考下面 *mtype.AnyValue
类型转换 使用 *mtype.AnyValue(对于不确定类型interfa{}比较适用)
1. 获取 *mtype.AnyValue. 参数 value: interface{} (即被转换的值, 可传任意类型值)
func Eval(value interface{}) *AnyValue
示例:
any := mtype.Eval(map[string]interface{}{})
2. 返回原值类型(对应上面支持类型, 例如:Int 字符串)
func (av *AnyValue) Type() string
3. 返回原值
func (av *AnyValue) Value() interface{}
4. 返回错误信息
func (av *AnyValue) ToError() error
5. 转成int类型
func (av *AnyValue) ToInt() int
6. 转成byte类型
func (av *AnyValue) ToByte() byte
7. 转成string类型
func (av *AnyValue) ToString() string
8. 转成bool类型
func (av *AnyValue) ToBool() bool
9. 转成map[string]string类型
func (av *AnyValue) ToStringMap() map[string]string
10. 更多方法...
Note: *mtype.AnyValue.Method()
完整调用示例:
intValue := mtype.Eval("10").ToInt()
stringValue := mtype.Eval(10).ToString()
stringMap := mtype.Eval("master": map[string]interface{}{
"host": "127.0.0.1",
"port": "3306",
}).ToStringMap()
内置类型 mtype.AnyMap
1. 使用方法
第一种方法:
anyMap := mtype.AnyMap{
"xxx":"xxx",
}
第二种方法:
anyMap := mtype.AnyMap(map[string]interface{}{
"xxx": "xxx",
})
anyMap的数据结构如下(使用json演示):
{
"database": {
"master": {
"host": "127.0.0.1",
"port": "3306"
},
"salve": {
"host": "127.0.0.1",
"port": "3307"
}
}
}
2. 查询字段值 参数 args: 任意 . 拼接字符串 (为空则返回 value = 自身值的 *AnyValue)
func (am *AnyMap) Get(args ...string) *AnyValue
调用示例:
v := anyMap.Get("database.master.port")
fmt.Println(v.ToString()) // 输出 3306
v := anyMap.Get()
fmt.Println(v.ToAnyMap()) // 输出 map[database:map[master:map[host:127.0.0.1 port:3306] salve:map[host:127.0.0.1 port:3307]]]
3. 插入或更新字段值 参数 args: 任意 . 拼接字符串 value: 要插入或更新的值
func (am *AnyMap) Set(args string, value interface{})
调用示例:
anyMap.Set("database.master.port",3389)
v := anyMap.Get("database.master.port")
fmt.Println(v.ToString()) // 输出 3389
v := anyMap.Get()
fmt.Println(v.ToAnyMap()) // 输出 map[database:map[master:map[host:127.0.0.1 port:3389] salve:map[host:127.0.0.1 port:3307]]]
内置类型 mtype.AnySlice
与 mtype.AnyMap使用方法一致
anySlice的数据结构如下(使用json演示):
[
{
"master": {
"host": "127.0.0.1",
"port": "3306"
},
"salve": {
"host": "127.0.0.1",
"port": "3307"
}
}
]
Note: key值索引直接使用字符串数值, 例:anySlice.Get("0.master.port")
内置类型 更多持续更新中...
# Constants
类型: map[string]interface{}.
类型: []map[string]interface{}.
类型: []interface{}.
类型: bool.
类型: byte.
类型: []byte.
类型: error.
类型: float64.
类型: int.
类型: int.
类型: []int.
类型: nil.
类型: rune.
类型: string.
类型: map[string]string.
类型: []map[string]string.
类型: []string.
类型: unknown.
# Type aliases
Built-in type: map[string]interface{}.
Built-in type: []map[string]interface{}.
Built-in type: []interface{}.