登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-04-12 12:21:13 349浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《其他验证 int 和 float64 的 reflect.Type 的方法》,涉及到golang,有需要的可以收藏一下

问题内容

在 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()orType.Kind()方法,其可能的值在包中作为常量列出。reflectKind

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")
}

你也可以在 a 中使用它switch

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

请注意,reflect.Typeandreflect.Value都有一个Kind()方法,因此reflect.ValueOf(myVar)如果您以 . 开头,也可以使用它reflect.TypeOf(myVar)

今天关于《其他验证 int 和 float64 的 reflect.Type 的方法》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>