cvtGo 任意数据类型安全转换
cvt 是一个简单、安全、高效的转换任意数据类型的 Go 语言工具包,支持自定义类型、提取结构体字段和值。
安装
go get -u github.com/shockerli/cvt
 
使用
支持 error 
 
以
E结尾的方法__E(): 当转换失败时会返回错误
cvt.IntE("12")          // 12, nil
cvt.Float64E("12.34")   // 12.34, nil
cvt.StringE(12.34)      // "12.34", nil
cvt.BoolE("false")      // false, nil
 
自定义类型、指针类型
自动解引用,并找到基本类型,完全支持自定义类型的转换
type Name string
var name Name = "jioby"
cvt.StringE(name)       // jioby, nil
cvt.StringE(&name)      // jioby, nil
 
忽略 error 
 
名称不以
E结尾的方法,如果转换失败,不会返回错误,会返回零值
cvt.Int("12")           // 12(success)
cvt.Int(struct{}{})     // 0(failed)
 
默认值
如果转换失败,返回默认值
cvt.Int(struct{}{}, 12)         // 12
cvt.Float("hello", 12.34)       // 12.34
 
更多示例
上千个单元测试用例,覆盖率近100%,所有示例可通过单元测试了解:
*_test.go
API
bool
- Bool
 - BoolE
 
int
- Int
 - IntE
 - Int8
 - Int8E
 - Int16
 - Int16E
 - Int32
 - Int32E
 - Int64
 - Int64E
 - Uint
 - UintE
 - Uint8
 - Uint8E
 - Uint16
 - Uint16E
 - Uint32
 - Uint32E
 - Uint64
 - Uint64E
 
string
- String
 - StringE
 
float
- Float32
 - Float32E
 - Float64
 - Float64E
 
time
- Time
 - TimeE
 
slice
-  
ColumnsE: 类似于 PHP 中的array_column,FieldE函数的切片版本,返回[]interface{} -  
FieldE: 取map或struct的字段值,返回interface{} -  
KeysE: 取map的键名,返回[]interface{} -  
Slice/SliceE: 转换成[]interface{} -  
SliceIntE: 转换成[]int -  
SliceInt64E: 转换成[]int64 -  
SliceFloat64E: 转换成[]float64 -  
SliceStringE: 转换成[]string 
评论
