cvtGo 任意数据类型安全转换

联合创作 · 2023-09-28 10:01

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_columnFieldE 函数的切片版本,返回 []interface{}

  • FieldE: 取 map  struct 的字段值,返回 interface{}

  • KeysE: 取 map 的键名,返回 []interface{}

  • Slice / SliceE: 转换成 []interface{}

  • SliceIntE: 转换成 []int

  • SliceInt64E: 转换成 []int64

  • SliceFloat64E: 转换成 []float64

  • SliceStringE: 转换成 []string

浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报