转向反映可比数据

时间:2016-02-21 14:05:43

标签: if-statement reflection go types

我希望能够使用reflect比较对象的类型。这是我的代码:

package main

import (
    "fmt"
    "reflect"
)

func main() {
    tst := "cat"
    if reflect.TypeOf(tst) == string {
        fmt.Println("It's a string!")
    }

}

这给了我一个错误type string is not an expression。如何使用反射修复此? (没有类型开关等)

1 个答案:

答案 0 :(得分:2)

两个简单的选择:

使用Kind

if reflect.TypeOf(tst).Kind() == reflect.String {
    fmt.Println("It's a string!")
}

使用TypeOf另一个字符串:

if reflect.TypeOf(tst) == reflect.TypeOf("") {
    fmt.Println("It's a string!")
}

但是,我个人更喜欢类型切换或类型检查(即if _, ok := tst.(string); ok {...}