我需要在CalRange函數調用后刪除或調整isPrime數組的大?。╥sPrime = 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 關注
- 393 瀏覽
添加回答
舉報
0/150
提交
取消