我如何在围棋中找到对象的类型?在Python中,我只使用typeof来获取对象的类型。在围棋中也有类似的情况,有没有办法实现同样的情况?

下面是我正在迭代的容器:

for e := dlist.Front(); e != nil; e = e.Next() {
    lines := e.Value
    fmt.Printf(reflect.TypeOf(lines))
}

在这种情况下,我无法获得对象行的类型,这是一个字符串数组。


当前回答

你可以使用reflect.TypeOf。

基本类型(如。: int, string):它将返回它的名称(例如:int, string) 结构:它将返回格式为<包名>的内容。<struct name>(例如:main.test)

其他回答

要获得字符串表示形式:

从http://golang.org/pkg/fmt/

%T值类型的go语法表示形式

package main
import "fmt"
func main(){
    types := []interface{} {"a",6,6.0,true}
    for _,v := range types{
        fmt.Printf("%T\n",v)
    }
}

输出:

string
int
float64
bool

你可以在运行时使用"reflect"包的TypeOf函数或使用fmt.Printf()检查任何变量/实例的类型:

package main

import (
   "fmt"
   "reflect"
)

func main() {
    value1 := "Have a Good Day"
    value2 := 50
    value3 := 50.78

    fmt.Println(reflect.TypeOf(value1 ))
    fmt.Println(reflect.TypeOf(value2))
    fmt.Println(reflect.TypeOf(value3))
    fmt.Printf("%T",value1)
    fmt.Printf("%T",value2)
    fmt.Printf("%T",value3)
}

简而言之,请使用fmt。Printf(“%T”,var1)或它在fmt包中的其他变体。

Go反射包具有检查变量类型的方法。

下面的代码段将打印出字符串、整数和浮点数的反射类型。

package main

import (
    "fmt"
    "reflect"
)

func main() {

    tst := "string"
    tst2 := 10
    tst3 := 1.2

    fmt.Println(reflect.TypeOf(tst))
    fmt.Println(reflect.TypeOf(tst2))
    fmt.Println(reflect.TypeOf(tst3))

}

输出:

string
int
float64

参见:http://play.golang.org/p/XQMcUVsOja查看它的实际操作。

更多文档请访问:http://golang.org/pkg/reflect/#Type

反映包来拯救:

reflect.TypeOf(obj).String()

检查这个演示