【Golang基礎總結】數組和切片的比較


1、容量是否可伸縮。數組的容量不可伸縮,切片的容量可以伸縮。

2、是否可以進行比較。數組對於相同類型相同維度相同長度是可以比較的,而切片只能跟nil進行比較。

3、作為函數參數時,數組一般傳入指向數組的指針,但是可以將切片作為參數傳入函數,不是說數組不能作為入參,只是為了節省開銷。

在函數間傳遞數組是一個開銷很大的操作。在函數之間傳遞變量時,總是以值的方式傳遞的。如果整個變量是一個數組,意味着整個數組,不管有多長,都會完整復制,並傳遞給函數。所以一個更好且更有效的方法是可以只傳入指向數組的指針,這樣只需要復制8個字節的數據。

在64位架構的機器上,一個切片需要24字節的內存:指針字段需要8字節,長度和容量字段分別需要8字節。由於與切片關聯的數據包含在底層數組里,不屬於切片本身,所以將切片復制到任意函數的時候,對底層數組大小都不會影響。復制時只會復制切片本身,不會涉及底層數組。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM