我是初学者。我在函数列表中创建了一个结构体的对象数组,并将该对象数组的地址传递给另一个函数changelist。在我的函数changelist中,我将它作为pointer.I想要编辑该函数内传递的数组对象的一些字段更改列表并将其传递回被调用的函数列表。当我尝试在我调用的函数中访问它时,我无法从更改列表函数访问更新的版本。无法访问在另一个函数中更改的结构体字段
Here is my code
type Mail struct {
Name string
Address string
Status bool
Error error
}
function List(){
var addressList = make([]Mail,2)
addressList[0].Name = "Name"
addressList[0].Address = "Address"
addressList[1].Name = "Name1"
addressList[1].Address = "Address"
newAddress:=changedlist(&addressList)
fmt.Println(newAddress)
}
function Changedlist(addressList *[]Mail)*[]Mail{
for _,r:=range *addressList{
if r.Name=="Name1"{
r.Status=false
r.err=errors.New("Error in the name")
continue
}
r.Status=true
r.Error=nil
}
return addressList
}
这里我所期待的是名字,当我得到这个在我的列表中的状态将成为真正的function.But它是假的,其是bool.This的默认值是指变化不做到实际的数组struct.It是修改复制版本。可以有人请指出我在正确的方向如何实现这一目标..谢谢。
第一:通过围棋的整体旅游工作(HTTPS ://tour.golang.org/)。第二:不要使用指向切片的指针。第三。再去一趟。第四:for循环中的'r'是地址列表元素的副本:当变更片时,使用'for i:= range slice'。再次去旅行。 – Volker
我建议你在写任何东西之前多阅读一下语言规范 –
谢谢volker。我认为你的建议帮助了我很多。将学习更多..感谢 –