golang github.com/spf13/cast 库识别不了 自定义数据类型

news/2024/11/19 18:20:03/

以下代码运行不会是10,而是返回 0  

package mainimport ("fmt""github.com/spf13/cast"
)type UserNum int32func main() {var uNum UserNumuNum = 10uNumint64 := 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, nilcase int32:return int64(s), nilcase int16:return int64(s), nilcase int8:return int64(s), nilcase uint:return int64(s), nilcase uint64:return int64(s), nilcase uint32:return int64(s), nilcase uint16:return int64(s), nilcase uint8:return int64(s), nilcase float64:return int64(s), nilcase float32:return int64(s), nilcase 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, nilcase nil:return 0, nildefault:return 0, fmt.Errorf("unable to cast %#v of type %T to int64", i, i)}
}


http://www.ppmy.cn/news/1039198.html

相关文章

两个案例熟悉String的基本操作

1、第一个案例 Java语言规范要求完全相同的字符串字面量,应该包含同样的Unicode字符序列(包含同一份码点序列的常量),并且必须是指向同一个String类实例。 package string; public class StringTest4 {public static void main(St…

【计算机网络篇】UDP协议

✅作者简介:大家好,我是小杨 📃个人主页:「小杨」的csdn博客 🐳希望大家多多支持🥰一起进步呀! UDP协议 1,UDP 简介 UDP(User Datagram Protocol)是一种无连…

探秘分布式大数据:融合专业洞见,燃起趣味火花,启迪玄幻思维

文章目录 一 数据导论二 大数据的诞生三 大数据概论3.1 大数据的5V特征3.2 大数据的工作核心 四 大数据软件生态4.1 数据存储软件4.2 数据计算软件4.3 数据传输软件 五 Apache Hadoop概述5.1 Apache Hadoop框架5.2 Hadoop的功能5.3 Hadoop的发展5.4 Hadoop发行版本 一 数据导论…

【SpringBoot笔记38】SpringBoot基于jakarta.mail依赖实现发送邮件的功能(邮件发送)

这篇文章,主要介绍SpringBoot基于jakarta.mail依赖实现发送邮件的功能(邮件发送)。 目录 一、邮件发送功能 1.1、引入依赖 1.2、邮件发送配置类 (1)添加配置信息 <

matlab使用教程(17)—多项式的定义和运算

1.创建并计算多项式 此示例说明如何在 MATLAB 中将多项式表示为向量以及根据相关点计算多项式。 1.1 表示多项式 MATLAB 将多项式表示为行向量&#xff0c;其中包含按降幂排序的系数。例如&#xff0c;三元素向量 p [p2 p1 p0]; 表示多项式 创建一个向量以表示二次多项式…

Unity如何控制声音大小(包括静音功能)

一&#xff1a;UGUI制作 1. 首先在【层级】下面创建UI里面的Slider组件。设置好它对应的宽度和高度。 2.调整Slider滑动条的填充颜色。一般声音颜色我黄色&#xff0c;所以我们也调成黄色。 我们尝试滑动Slider里面的value。 a.滑动前。 b.滑动一半。 c.滑动完。 从以上滑动va…

Blazor前后端框架Known-V1.2.12

V1.2.12 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazo…

1 树 1.1 树的基本概念 1.1.1 什么是树&#xff1f; 树是n(n > 0)个结点的有限集。当n 0时&#xff0c;称为空树。在任意一颗非空树上应该满足&#xff1a; 有且仅有一个特定的称为根的结点当n>1时&#xff0c;其余结点可分为m&#xff08;m>0&#xff09;个互不相…