浅析golang github.com/spf13/cast 库识别不了自定义数据类型
更新时间:2023年08月19日 10:01:23 作者:我林
这篇文章主要介绍了golang github.com/spf13/cast库识别不了自定义数据类型,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
以下代码运行不会是10,而是返回 0
package main
import (
"fmt"
"github.com/spf13/cast"
)
type UserNum int32
func main() {
var uNum UserNum
uNum = 10
uNumint64 := cast.ToInt64(uNum)
uNumint64E, err := cast.ToInt64E(uNum)
fmt.Println(uNumint64)
fmt.Println(uNumint64E, err)
}看一下源码,ToInt64()直接屏蔽了错误,可以使用 ToInt64E 这种,返回带错误的函数
// ToInt64 casts an interface to an int64 type.
func ToInt64(i interface{}) int64 {
v, _ := ToInt64E(i)
return v
}
// ToInt64E casts an interface to an int64 type.
func ToInt64E(i interface{}) (int64, error) {
i = indirect(i)
intv, ok := toInt(i)
if ok {
return int64(intv), nil
}
switch s := i.(type) {
case int64:
return s, nil
case int32:
return int64(s), nil
case int16:
return int64(s), nil
case int8:
return int64(s), nil
case uint:
return int64(s), nil
case uint64:
return int64(s), nil
case uint32:
return int64(s), nil
case uint16:
return int64(s), nil
case uint8:
return int64(s), nil
case float64:
return int64(s), nil
case float32:
return int64(s), nil
case string:
v, err := strconv.ParseInt(trimZeroDecimal(s), 0, 0)
if err == nil {
return v, nil
}
return 0, fmt.Errorf("unable to cast %#v of type %T to int64", i, i)
case json.Number:
return ToInt64E(string(s))
case bool:
if s {
return 1, nil
}
return 0, nil
case nil:
return 0, nil
default:
return 0, fmt.Errorf("unable to cast %#v of type %T to int64", i, i)
}
}到此这篇关于golang github.com/spf13/cast 库识别不了自定义数据类型的文章就介绍到这了,更多相关golang github.com/spf13/cast 库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Go Excelize API源码解析GetSheetFormatPr使用示例
这篇文章主要为大家介绍了Go Excelize API源码解析GetSheetFormatPr使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-08-08
golang利用unsafe操作未导出变量-Pointer使用详解
这篇文章主要给大家介绍了关于golang利用unsafe操作未导出变量-Pointer使用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧2018-08-08
Go语言之重要数组类型切片(slice)make,append函数解读
这篇文章主要介绍了Go语言之重要数组类型切片(slice)make,append函数用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-09-09


最新评论