我使用GoLang v1.5.1,但收到这个奇怪的错误,或者我错过了一些东西。
在名为model的程序包中,我定义了以下内容:
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
我错过了什么?是不是同一类型? 最佳答案
一个是指向 slice 的指针,一个是 slice 指针。
要解决问题,请将var ingredients []model.IngredientType
更改为var ingredients []*model.IngredientType
,使其与您的struct字段的类型匹配。然后将分配更改为currentFinalRow.Ingredients = ingredients
而不使用“address-of”运算符。
(更短的)替代方法是err = json.Unmarshal(row.Ingredients, ¤tFinalRow.Ingredients)
,以便json解组直接在您的struct字段上进行。
关于go - 不能在分配中使用&ingredients(类型* [] foo.bar)作为类型[] * foo.bar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63869332/