為什麼在刪除前 n 個項目時切片的容量會改變?
在Go 中,切片被實現為結構,類似於以下內容:
<code class="go">type slice struct { array unsafe.Pointer len int cap int }</code>
如果我們修改用於列印切片的函數以包含指向底層數組的指針,我們會得到以下輸出:
ptr=0x450000 len=6 cap=6 [2 3 5 7 11 13] ptr=0x450000 len=4 cap=6 [2 3 5 7] ptr=0x450008 len=2 cap=4 [5 7]
如您所見,刪除最後兩項確實不會改變指針,而刪除前兩項則改變。這是因為切片本質上是底層數組的一個視窗。從開頭刪除項目會強制使用不同的指標在新位置重新建立切片,而從結尾刪除項目只會調整現有切片的長度。
有關更多信息,請參閱以下內容資源:
以上是為什麼從 Go 切片的開頭刪除元素會改變其容量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!