【发布时间】:2018-06-09 02:54:06
【问题描述】:
我试图传递结构片段,即[]carDetail 或[]bikeDetail,它们在func fetch(url string, itemList []IMapping) (error) 中实现了IMapping 接口。但后来遇到了这个link。 GoLang 不支持它。因此,将签名更改为func fetch(url string, itemList IMapping) (error)。现在,我试图在函数中传递carDetail 或bikeDetail 结构,并在fetch 函数中尝试使用反射创建结构切片。那么,我该怎么做呢?进一步可以在json.Unmarshal方法中传递,将json映射到struct。
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)
.....
}
【问题讨论】:
-
你可以直接使用 struct 没有接口,并在你的 fetch 函数中创建一个结构切片来解组数据
标签: go reflection