关于如何在运行时确定对象类型的一些现有答案。god帮助我们

if reflect.TypeOf(err) ==  string {

}

那不编译
if reflect.TypeOf(err) ==  "string" {

}

既不是这样也不是这样:
if reflect.TypeOf(err).Kind() ==  "string" {

}

我们如何做到这一点?

如果我使用答案之一给出的typeof函数,则会得到:

go - 使用反射确定类型是否为字符串-LMLPHP

最佳答案

比较像字符串

if reflect.TypeOf(err).String() == "string" {
    fmt.Println("hello")
}

或使用type assertions
type F = func()

func typeof(v interface{}) string {
    switch v.(type) {
    case int:
        return "int"
    case string:
        return "string"
    case F:
        return "F"
    //... etc
    default:
        return "unknown"
    }
}

然后
var f F
if typeof(f) == "F"{
    fmt.Println("hello F")
}

关于go - 使用反射确定类型是否为字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53861831/

10-16 21:50
查看更多