code: func getGTLDData() ([]util.GTLDPeriod, error) {
  	respBody, err := getData(ICANN_GTLD_JSON)
  	if err != nil {
  		return nil, fmt.Errorf("error getting ICANN gTLD JSON : %s", err)
  	}
  
  	var results struct {
  		GTLDs []util.GTLDPeriod
  	}
  	if err := json.Unmarshal(respBody, &results); err != nil {
  		return nil, fmt.Errorf("unexpected error unmarshaling ICANN gTLD JSON response "+
  			"body from %q : %s",
  			ICANN_GTLD_JSON, err)
  	}
  	return results.GTLDs, nil
  }
docs: // getGTLDData fetches the ICANN_GTLD_JSON and parses it into a list of
  // util.GTLDPeriod objects, or returns an error. The gTLDEntries are returned
  // as-is and may contain entries that were never delegated from the root DNS.