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

我需要在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


Cats萌萌
浏览 354回答 2
2回答

翻过高山走不出你

在Go中,数组与切片不同。切片可以为nil,但数组不能为null,因为它们是静态的。在上面的代码中,在第1行中,的内容isPrime实际上[false false false ...]具有您的size变量所允许的错误值。因此,您的数组实际上无法删除或调整大小。它只能是零值。如果您确实需要调整其大小,建议您改用切片,或创建具有新大小的新数组,然后将先前数组的内容复制到其中。

撒科打诨

Go是一种垃圾回收语言,您无法从内存中删除对象,只能“清除”它们。有关详细信息,请参见如何在go中删除struct对象?您也不能调整数组的大小,数组的大小是固定的(并且大小是类型的一部分)。要清除数组,您可以为其分配零值(不是nil)。对零值数组使用复合文字,例如[size]bool{}:const size = 4isPrime := [size]bool{true, true}fmt.Println(isPrime)isPrime = [size]bool{}fmt.Println(isPrime)输出(在Go Playground上尝试):[true true false false][false false false false]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go