I have this function to parse HTTP results:
func (a *Admin) ResponseDecode(structName string, body io.Reader) (interface{}, error) {
content, err := ioutil.ReadAll(body)
if err != nil {
    return nil, err
}
switch structName {
case "[]Cat":
    var data []Cat
    err = json.Unmarshal(content, &data)
    if err != nil {
        return nil, err
    }
    return data, err
case "[]Dog":
    var data []Dog
    err = json.Unmarshal(content, &data)
    if err != nil {
        return nil, err
    }
    return data, err
default:
    log.Fatal("Can't decode " + structName)
}
return nil, nil
}
I do a type assertion after this method :
parsed, err := a.ResponseDecode("[]Cat", resp.Body)
if err != nil {
    return nil, err
}
return parsed.([]Cat), nil
but how can I do to avoid the repetition of the code :
var data []Stuff
err = json.Unmarshal(content, &data)
if err != nil {
    return nil, err
}
return data, err
Every time I add an object? Usually I would use generics, but this is Go. What's the good way to do that ?
 
    