Looping over nested maps

Is there anyway I can loop over the inner maps and not just the main map?

./prog.go:49:31: cannot range over days (variable of type interface{})

My code in case nobody want to use play space:

package main

import (
	"fmt"
)

func main() {
package main

import (
	"fmt"
)

func main() {

	var mapData = map[string]interface{}{

		"Monday": map[string]interface{}{
			"First":  "34520 16th Ave S, Federal Way, WA+98003",
			"Second": "",
			"Third":  "Lynwood",
		},
		"Tuesday": map[string]interface{}{
			"First":  "34520 16th Ave S, Federal Way, WA+98003",
			"Second": "",
			"Third":  "Lynwood",
		},
		"Wednesday": map[string]interface{}{
			"First":  "34520 16th Ave S, Federal Way, WA+98003",
			"Second": "",
			"Third":  "Lynwood",
		},
		"Thursday": map[string]interface{}{
			"First":  "34520 16th Ave S, Federal Way, WA+98003",
			"Second": "",
			"Third":  "Lynwood",
		},
		"Friday": map[string]interface{}{
			"First":  "34520 16th Ave S, Federal Way, WA+98003",
			"Second": "",
			"Third":  "Lynwood",
		},
		"Saturday": map[string]interface{}{
			"First":  "34520 16th Ave S, Federal Way, WA+98003",
			"Second": "",
			"Third":  "Lynwood",
		},
		"Sunday": map[string]interface{}{
			"First":  "34520 16th Ave S, Federal Way, WA+98003",
			"Second": "",
			"Third":  "Lynwood",
		},
	}

	for _, days := range mapData {
		fmt.Println("day", days)
		for _, appointment := range days {
			fmt.Println("appointment", appointment)
		}

	}

}

Nevermind i figured out the solution var mapData = map[string]map[string]interface{} instead of var mapData = map[string]interface{}

  1. Why make it map[string]interface{} and not map[string]map[string]string?
  2. If you really need the interface{}s, you need to use a “type assertion” within the loop to get their actual type.