我使用 GoLang v1.5.1,我收到了这个奇怪的错误,或者我错过了一些东西。在一个名为模型的包中,我定义了以下内容:type SearchResultRow struct { ID int `json:"id"` Name string `json:"name"` Type string `json:"type"` Notes *string `json:"notes"` AddedBy *string `json:"added_by"` Source *string `json:"source"` Ratings *int `json:"ratings"` IVer *int `json:"i_ver"` Ingredients []*IngredientType `json:"ingredients"` Accessories []*AccessoryType `json:"accessories"`}type AccessoryType struct { ID int `json:"id"` Name string `json:"name"` IVer *int `json:"i_ver"`}type IngredientType struct { Name string `json:"name"` Flavor *string `json:"flavor"` ItID *int `json:"it_id"` IID *int `json:"i_id"` IVer *int `json:"i_ver"`}在我的主要代码中 var currentFinalRow model.SearchResultRow var ingredients []model.IngredientType ... err = json.Unmarshal(row.Ingredients, &ingredients) if err != nil { return nil, err } currentFinalRow.Ingredients = &ingredients我得到了错误:cannot use &ingredients (type *[]model.IngredientType) as type []*model.IngredientType in assignment我错过了什么?不是同一种吗?
1 回答
Helenr
TA贡献1780条经验 获得超3个赞
一个是指向切片的指针,一个是指针切片。
要解决问题,请更改var ingredients []model.IngredientType
为var ingredients []*model.IngredientType
使其与您的结构字段的类型相匹配。然后将赋值更改为currentFinalRow.Ingredients = ingredients
不使用“address-of”运算符。
一个(更短的)替代方案是err = json.Unmarshal(row.Ingredients, ¤tFinalRow.Ingredients)
让 json 解组直接在您的 struct 字段上工作。
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消