为了账号安全,请及时绑定邮箱和手机立即绑定

在go中删除或调整数组大小

在go中删除或调整数组大小

Go
Cats萌萌 2021-04-02 18:19:48
我需要在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变量所允许的错误值。

因此,您的数组实际上无法删除或调整大小。它只能是零值。

如果您确实需要调整其大小,建议您改用切片,或创建具有新大小的新数组,然后将先前数组的内容复制到其中。


查看完整回答
反对 回复 2021-04-19
?
撒科打诨

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]


查看完整回答
反对 回复 2021-04-19
  • 2 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信