我正在使用一个定义的结构,比如这个:
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)