我想在切片中保留引用列表,但我无法找到任何在线资源来解释在不分配给变量的情况下保留引用是否安全?
我的意思是,操作系统是否有可能在引用的地址中写入程序员不期望的内容?
这是示例代码:
type ListItem [8]uint64
list := make([]*ListItem, 0)
list = append(list, &ListChunk{})
list = append(list, &ListChunk{})
list = append(list, &ListChunk{})
换句话说,是否可以保证名为
list
的切片中的项目在程序运行时保持不变,无论运行多长时间?
在您的情况下可能不会(引用将保持不变),但这也取决于您的程序对其执行的操作:
Go 运行时在程序的生命周期内不会更改存储在切片中的引用(指针)但是在一个条件下: -您不会在函数中重新分配切片或其元素指针([8]uint64 的数组)。只要您不为切片的元素重新分配新值,引用将保持不变。