package main import ( "fmt" "reflect" ) type Map map[string]string type Object struct { Items Map } func main() { obj := &Object{} t := reflect.ValueOf(obj).Elem().FieldByName("Items").Type() // The below gives me 'main.Map' type. But I want to get the // underlying type of 'map[string]string'... How? fmt.Printf("From:\t%v\n", t) fmt.Println("I want:\tmap[string]string") // Reflection again.. if (t.Kind() == reflect.Map) { fmt.Printf("Got:\t%v", reflect.MapOf(t.Key(), t.Elem())) } }