Я пытался передать часть структур, то есть []carDetail
или []bikeDetail
, которые реализуют интерфейс IMapping
в func fetch(url string, itemList []IMapping) (error)
.Но потом наткнулся на эту ссылку .GoLang не поддерживает это.Итак, изменили подпись на func fetch(url string, itemList IMapping) (error)
.Теперь я пытаюсь передать структуру carDetail
или bikeDetail
в функцию и в функцию fetch
, пытаясь создать фрагмент структуры с помощью отражения.Итак, как я могу это сделать?Что еще можно передать в методе json.Unmarshal
для сопоставления json со структурой.
type IMapping interface {
GetId() int
}
type carDetail struct {
ModelId int `json:"modelId"`
CarName string `json:"carName"`
}
func (m *carDetail) GetId() int {
return m.ModelID
}
type bikeDetail struct {
ModelId int `json:"modelId"`
BikeName string `json:"bikeName"`
}
func (m *bikeDetail) GetId() int {
return m.ModelID
}
func fetch(url string, itemList IMapping) (error) {
var myClient = &http.Client{}
r, err := myClient.Get(url)
body, err := ioutil.ReadAll(r.Body)
defer r.Body.Close()
// how to create slice at run time using reflection say objVehicle
err = json.Unmarshal(body, &objVehicle)
.....
}