验证 int 和 float64 的 Reflect.Type 的其他方法

2024-01-03

在golang中,JSON消息中的数字总是被解析为float64。 为了检测它是否实际上是整数,我使用reflect.TypeOf()检查其类型。 不幸的是没有常数代表reflect.Type.

intType := reflect.TypeOf(0)
floatType := reflect.TypeOf(0.0)
myType := reflect.TypeOf(myVar)
if myType == intType {
    // do something
}

有没有更优雅的解决方案而不是使用 0 或 0.0 来获取reflect.Type?


您还可以使用Value.Kind() https://golang.org/pkg/reflect/#Value.Kind or Type.Kind() https://golang.org/pkg/reflect/#Type其可能值被列为常量的方法reflect包,在文档中Kind https://golang.org/pkg/reflect/#Kind type.

myType := reflect.TypeOf(myVar)
if k := myType.Kind(); k == reflect.Int {
    fmt.Println("It's of type int")
} else if k == reflect.Float64 {
    fmt.Println("It's of type float64")
}

您还可以在switch:

switch myType.Kind() {
case reflect.Int:
    fmt.Println("int")
case reflect.Float64:
    fmt.Println("float64")
default:
    fmt.Println("Some other type")
}

请注意,两者reflect.Type https://golang.org/pkg/reflect/#Type and reflect.Value https://golang.org/pkg/reflect/#Value has a Kind()方法,所以如果你开始的话你可以使用它reflect.ValueOf(myVar)而且如果你从reflect.TypeOf(myVar).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

验证 int 和 float64 的 Reflect.Type 的其他方法 的相关文章

随机推荐

  • SQL/Postgres 日期时间划分/规范化

    我有这个活动表 Field Type id int 11 unsigned start date timestamp end date timestamp 我需要一个按开始日期按天对这些活动进行分组的视图 但这样的话 如果结束日期与开始日期
  • 如何从静态库获取版本号?

    我有一个链接到 iOS 应用程序的库的 a 文件 我如何知道库的版本号 我不需要以编程方式执行此操作 我只需要手动获取一次 关于如何将版本号编码到静态库中没有共同的主题 有时根本不存在 有时 这是使用属于该库的标头来完成的 有时 它是使用返
  • 如何在 Ajax 监听器中获取 SelectBooleanCheckbox 的状态?

    我试图根据复选框的状态在 ManagedBean 中执行一些操作 复选框在这里
  • 使用 OnClickListener() 是策略模式的示例吗?

    Is 单击监听器 https developer android com reference android view View OnClickListener在android中策略模式的例子 在另一个 Stackoverflow 中que
  • MVC 在回发时选择带有模型的列表,如何?

    我正在尝试使用 MVC 3 创建一个需要 2 个下拉列表的视图 在我唯一的其他 MVC 应用程序中 我们使用 Telerik 控件 该控件使用 Ajax 方法来填充数据 现在在这个项目中我们不使用第三方控件 所以我将使用 MVCSelect
  • 在 AngularJS 动态电子邮件验证元素中,当我填写电子邮件检查元素时,它会被重置

    这是 Angular JS 中的电子邮件检查元素代码几乎没问题 但这有一个问题 当我填写电子邮件检查元素时 它被重置 例子 我将其写入电子邮件检查元素 电子邮件受保护 cdn cgi l email protection 但这是重置 当我写
  • Symfony2加载条件配置

    我刚刚开始使用 Symfony2 所以我还是个菜鸟 我需要根据请求 uri 或特定路由加载配置文件 yml E G dynamicroute 应该加载dynamicroute yml and anotherdynamicroute 应该加载
  • 如何恢复中断的下载

    我正在尝试从我的 Yahoo 下载一个大文件 网站服务器显然是设置的 不是我设置的 如果下载未在 100 秒内完成 则会断开下载 文件足够小 通常可以成功传输 当数据速率较慢且下载断开时 是否有办法在发生断开的文件偏移处恢复 URLConn
  • 识别导致回发的控制

    我有一个在下拉列表选择上回发的页面 使用 AJAX 更新面板 根据下拉选择 页面上的其余 UI 是动态生成的 动态 UI 在页面加载时绘制 用于获取值Submit按钮点击 我面临的问题是 在下拉列表更改时 似乎会发生两次回发 一个绘制原始
  • 根据 pandas 数据框中的其他分类值填充分类值的缺失值

    我想用另一个类别中最常见的值填充 Pandas 数据框中分类值的缺失值 例如 import pandas as pd import numpy as np data type softdrink juice softdrink softdr
  • 使 p:calendar 只读

    我要实现
  • 选择所有数据包括另一个表,即使为空

    设置 1 员工表 employeeID firstName lastName 1 鞋子表 shouldD Employee员工ID shoeName shoeColor shoe Brand 我想选择 Employee 表中的所有行 即使鞋
  • R 中用于超大型数据集处理和机器学习的推荐包 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 看起来 R 确实是为处理可以完全拉入内存的数据集而设计的 建议使用哪些 R 包来对无法拉入内存的超大型数
  • java 扫描仪仅读取前 2048 个字节

    我使用 java util Scanner 使用以下代码从类路径读取文件内容 String path1 getClass getResource myfile html getFile System out println new File
  • Delphi 和单元中的最终确定

    我有两个单位unitS和unit 类 TFoo 在单元中声明 在完成unitS时调用B Free总是安全的吗 它如何取决于 dpr 中的unitS和unit的顺序 当执行unitA终结时 我可以确定unitB存在吗 unit unitB i
  • 构造函数中的对象参数

    首先 如果我的问题难以理解 我深表歉意 我很难准确地解释我需要帮助的内容 我对 Java 和按引用传递等概念很陌生 基本上 我需要知道为什么下面的代码不正确 如何告诉 Java 使用作为构造函数参数传入的对象的方法 再次致歉 感谢您的阅读
  • .net 异常捕获块

    以下 catch 块有什么区别 try catch and try catch Exception 我意识到 在任何一种情况下 异常实例都不可用 但是我可以用一个实例做一些其他实例做不到的事情吗 他们是almost相同 来自 C 语言规范
  • 如何在 Xcode 4.3 下用 Objective C 制作 9*9 网格视图?

    i have searched Xcode controls but doesn t found anything that makes a GridView like the one in the lecture below so how
  • 如何在 C# 中从二维数组中获取完整的行或列

    我不想使用锯齿状数组 并且我有一个二维数组 并且我想获得完整的列或行而不循环遍历它 有谁知道如何做到这一点 1 2 3 4 5 6 double array new double 2 3 Out 1 2 3 or 2 5 要从多维数组中获取
  • 验证 int 和 float64 的 Reflect.Type 的其他方法

    在golang中 JSON消息中的数字总是被解析为float64 为了检测它是否实际上是整数 我使用reflect TypeOf 检查其类型 不幸的是没有常数代表reflect Type intType reflect TypeOf 0 f