我需要在CalRange函数调用后删除或调整isPrime数组的大小(isPrime = nil不起作用)isPrime := [size]bool{}CalRange(size, maxİndex, isPrime[:])isPrime = nil谢谢大家的回答,我这样解决了。如何在Go中删除struct对象?person1 := &Person{name: "Name", age: 69}// work with person1// Clear person1:person1 = nil
2 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
在Go中,数组与切片不同。切片可以为nil,但数组不能为null,因为它们是静态的。
在上面的代码中,在第1行中,的内容isPrime
实际上[false false false ...]
具有您的size变量所允许的错误值。
因此,您的数组实际上无法删除或调整大小。它只能是零值。
如果您确实需要调整其大小,建议您改用切片,或创建具有新大小的新数组,然后将先前数组的内容复制到其中。
撒科打诨
TA贡献1934条经验 获得超2个赞
Go是一种垃圾回收语言,您无法从内存中删除对象,只能“清除”它们。有关详细信息,请参见如何在go中删除struct对象?您也不能调整数组的大小,数组的大小是固定的(并且大小是类型的一部分)。
要清除数组,您可以为其分配零值(不是nil)。对零值数组使用复合文字,例如[size]bool{}:
const size = 4
isPrime := [size]bool{true, true}
fmt.Println(isPrime)
isPrime = [size]bool{}
fmt.Println(isPrime)
输出(在Go Playground上尝试):
[true true false false]
[false false false false]
- 2 回答
- 0 关注
- 353 浏览
添加回答
举报
0/150
提交
取消