我希望能够使用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
。如何使用反射修复此? (没有类型开关等)
答案 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 {...}