在Go中将结构追加到结构的匿名切片



我正在使用一个定义的结构,比如这个:

type MyList struct {
Items  []struct {
ResourceLocation string `json:"resourceLocation"`
Resource         Tmp  `json:"resource"`
} `json:"items"`
ListOptions
}

并且我需要向Items切片添加一个结构。

我尝试了以下方法:

tmp2 := struct {
ResourceLocation string
Resource         Tmp
}{
Resource:   myTempStruct,
}
tmpList.Items = append(MyList.Items, tmp)

但我得到了一个:

不能将"tmp"(类型struct{…}(用作类型struct{…}

错误。

顺便说一下,我不能修改

type MyList struct {
Items  []struct {
ResourceLocation string `json:"resourceLocation"`
Resource         Tmp  `json:"resource"`
} `json:"items"`
ListOptions
}

这就是为什么我不能给Items分配一个名称并在一个单独的结构中定义它的原因。谢谢

问题中的代码不起作用,因为字段标记是类型的一部分。

将字段标记添加到问题中的匿名类型:

item := struct {
ResourceLocation string `json:"resourceLocation"`
Resource         Tmp    `json:"resource"`
}{
Resource: myTempStruct,
}

更好的是,声明一个与MyList.Items.元素具有相同底层类型的类型

type Item struct {
ResourceLocation string `json:"resourceLocation"`
Resource         Tmp    `json:"resource"`
}

构造元素时使用该类型:

item := Item{Resource: myTempStruct}
list.Items = append(list.Items, item)