Существует несколько проблем:
eagle := birds["eagle"] //eagle is of type interface{}
, поэтому приведите его к карте:
eagle := birds["eagle"].(map[string]interface{})
Теперь вы можете перебирать его:
for key, value := range eagle {
for _, e := range value.([]interface{}){
fmt.Println(key, e.(string))
}
}
значение равноснова интерфейс здесь.Поэтому сначала приведите к [] interface {}, а затем к строке.
Вот полный рабочий код: https://play.golang.org/p/Bdnwit1wBYh