I\'m in the infant stages of trying to wrap my mind around Go. At the moment, I\'m simulating an API request that returns a JSON-formatted string containing an array of objects.
I prefer to declare my own Slice and Map, then I can add methods onto them to aid in the type assertions. I only included two methods below, but you can add more as needed:
package main
type Map map[string]interface{}
type Slice []interface{}
func (a Slice) M(n int) Map {
return a[n].(map[string]interface{})
}
func (m Map) N(s string) float64 {
return m[s].(float64)
}
Result:
package main
import (
"encoding/json"
"fmt"
"strings"
)
func main() {
response := strings.NewReader(`[
{"month": 12, "day": 31},
{"month": 11, "day": 30}
]`)
view := Slice{}
json.NewDecoder(response).Decode(&view)
for index := range view {
record := view.M(index)
for key := range record {
val := record.N(key)
fmt.Println(key, val)
}
}
}
https://golang.org/ref/spec#Type_declarations