错误:无法在 Golang 中遍历指向切片的指针
当尝试迭代指向 Golang 中切片的指针时,“cannot可能会发生“范围超出切片指针”错误。这是一个常见的误解,因为指向切片的指针通常是不必要的。
在提供的代码片段中,populateClassRelationships 函数中出现了问题:
func (c *ClassRepository) populateClassRelationships(classes *[]entities.Class) { for i := range classes { <---------- Here is the problem
classes 参数的类型是指向切片 (*[]entities.Class) 的指针,但范围语法需要直接切片类型([]entities.Class).
原因
Go 切片已经是指向底层数组的指针,这使得指向切片的指针在技术上是多余且低效的。切片包含以下信息:
因此,将切片分配给指针不会添加任何值,并且可以创建
解决方案
要解决该错误,只需删除间接 (*) 即可。迭代切片的正确语法是:
func (c *ClassRepository) populateClassRelationships(classes []entities.Class) { for i := range classes {
这将直接迭代类切片的元素,而不引用指向切片的指针。
以上是为什么 Go 返回'无法超出指向切片的指针范围”以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!