gogo-reflect

How to find the type of an object in Go?


How do I find the type of an object in Go? In Python, I just use typeof to fetch the type of object. Similarly in Go, is there a way to implement the same ?

Here is the container from which I am iterating:

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

I am not able to get the type of the object lines in this case which is an array of strings.


Solution

  • The Go reflection package has methods for inspecting the type of variables.

    The following snippet will print out the reflection type of a string, integer and float.

    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))
    
    }
    

    Output:

    string
    int
    float64
    

    see: http://play.golang.org/p/XQMcUVsOja to view it in action.

    More documentation here: http://golang.org/pkg/reflect/#Type