Arrays Go接口片和指针
我想在一个具有切片的结构上生成一个函数。 我的问题是:我想使用指针参数,因为我必须修改我的结构内容 这是我的密码:Arrays Go接口片和指针,arrays,pointers,go,struct,slice,Arrays,Pointers,Go,Struct,Slice,我想在一个具有切片的结构上生成一个函数。 我的问题是:我想使用指针参数,因为我必须修改我的结构内容 这是我的密码: type CampaignIndexMemory []CampaignIndex type CampaignIndex struct { Objects []CampaignIndexObject } type CampaignIndexObject struct { //They don't really care about us } func (c *C
type CampaignIndexMemory []CampaignIndex
type CampaignIndex struct {
Objects []CampaignIndexObject
}
type CampaignIndexObject struct {
//They don't really care about us
}
func (c *CampaignIndexMemory) setCampaignIndex(object CampaignIndex) {
valueSet := false
for i,_ := range c {
if c[i].Objects[0].ID == object.Objects[0].ID {
c[i] = object
valueSet = false
break
}
}
if valueSet {
c = append(c, object)
}
}
我来自Java世界(我非常抱歉),所以我的做法可能是错误的
在这段代码中,编译出错,并在我的“Objects”属性上显示“unresolved reference”
我的问题很简单:发生了什么
感谢您的帮助、时间和好意:)方法是在类型上定义的
CampaignIndexMemory
不是struct
,而是类型
。类型为“活动索引的切片”
从
切片保存对底层数组的引用,如果指定了一个
切片到另一个,两者都引用相同的数组。如果函数采用
slice参数,它对切片元素所做的更改将
调用方可见,类似于将指针传递给
底层数组
这意味着方法setActivityIndex
的接收者可能是切片
,而不是指向切片的指针。更改将应用于调用方
func (c CampaignIndexMemory) setCampaignIndex(object CampaignIndex) {
指向切片的指针指向,所以我猜您得到的错误是因为切片头不包含
对象字段。方法是在类型上定义的CampaignIndexMemory
不是struct
,而是类型
。类型为“活动索引的切片”
从
切片保存对底层数组的引用,如果指定了一个
切片到另一个,两者都引用相同的数组。如果函数采用
slice参数,它对切片元素所做的更改将
调用方可见,类似于将指针传递给
底层数组
这意味着方法setActivityIndex
的接收者可能是切片
,而不是指向切片的指针。更改将应用于调用方
func (c CampaignIndexMemory) setCampaignIndex(object CampaignIndex) {
指向切片的指针指向,因此我猜您得到的错误是因为切片标头不包含对象
字段。“我想在具有切片的结构上创建一个函数。”但您的接收器不是结构
,它是*活动索引内存
,例如,指向activityindex
es片段的指针。我刚刚将我的类型转换为struct,它运行良好。谢谢这是我的新代码:键入CampaignIndexMemory struct{indexes[]CampaignIndex},我只需要用c.indexes[I]替换我的所有c[I]“我想在一个具有片的结构上生成一个函数。”但你的接收者不是结构
,而是*CampaignIndexMemory
,例如,指向activityindex
es片段的指针。我刚刚将我的类型转换为struct,它运行良好。谢谢这是我的新代码:键入campaignexmemory struct{indexes[]CampaignIndex},我只需要用c.indexes[I]替换所有的c[I]