我如何在围棋中找到对象的类型?在Python中,我只使用typeof来获取对象的类型。在围棋中也有类似的情况,有没有办法实现同样的情况?
下面是我正在迭代的容器:
for e := dlist.Front(); e != nil; e = e.Next() {
lines := e.Value
fmt.Printf(reflect.TypeOf(lines))
}
在这种情况下,我无法获得对象行的类型,这是一个字符串数组。
我如何在围棋中找到对象的类型?在Python中,我只使用typeof来获取对象的类型。在围棋中也有类似的情况,有没有办法实现同样的情况?
下面是我正在迭代的容器:
for e := dlist.Front(); e != nil; e = e.Next() {
lines := e.Value
fmt.Printf(reflect.TypeOf(lines))
}
在这种情况下,我无法获得对象行的类型,这是一个字符串数组。
当前回答
如果你想检测if表达式中的类型:
if str, ok := myvar.(string); ok {
print("It's a string")
}
或者没有类型断言(可能会产生错误):
if reflect.TypeOf(myvar).String() == "string" {
print("It's a string")
}
其他回答
你可以使用reflect.TypeOf。
基本类型(如。: int, string):它将返回它的名称(例如:int, string) 结构:它将返回格式为<包名>的内容。<struct name>(例如:main.test)
反映包来拯救:
reflect.TypeOf(obj).String()
检查这个演示
如果我们有这些变量:
var counter int = 5
var message string = "Hello"
var factor float32 = 4.2
var enabled bool = false
1: fmt。Printf %T格式:要使用此功能,您应该导入“fmt”
fmt.Printf("%T \n",factor ) // factor type: float32
2:反映。TypeOf函数:要使用这个特性,你应该导入"reflect"
fmt.Println(reflect.TypeOf(enabled)) // enabled type: bool
3: reflect. valueof (X).Kind():要使用这个特性,你应该导入"reflect"
fmt.Println(reflect.ValueOf(counter).Kind()) // counter type: int
最好的方法是在谷歌中使用反射概念。 反映。TypeOf在给出包名的同时给出类型 reflect.TypeOf().Kind()给出下划线类型
对于数组和切片,使用Type.Elem():
a := []string{"foo", "bar", "baz"}
fmt.Println(reflect.TypeOf(a).Elem())