// +build ignore,OMIT package main import ( "encoding/json" "errors" "fmt" "log" "net/http" ) func main() { items, err := Get("golang") // HL if err != nil { log.Fatal(err) } for _, item := range items { // HL fmt.Println(item.Title) } } type Response struct { Data struct { Children []struct { Data Item } } } type Item struct { Title string URL string } func Get(reddit string) ([]Item, error) { url := fmt.Sprintf("http://reddit.com/r/%s.json", reddit) // HLurl resp, err := http.Get(url) // HLget if err != nil { return nil, err // HLreturn } defer resp.Body.Close() // HLclose if resp.StatusCode != http.StatusOK { // HLstatus return nil, errors.New(resp.Status) // HLerrors } r := new(Response) // HLdecode err = json.NewDecoder(resp.Body).Decode(r) // HLdecode if err != nil { return nil, err // HLreturn } items := make([]Item, len(r.Data.Children)) // HLprepare for i, child := range r.Data.Children { // HLconvert items[i] = child.Data // HLconvert } // HLconvert return items, nil // HLreturn }