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
评论