1、容量是否可伸縮。數組的容量不可伸縮,切片的容量可以伸縮。
2、是否可以進行比較。數組對於相同類型相同維度相同長度是可以比較的,而切片只能跟nil進行比較。
3、作為函數參數時,數組一般傳入指向數組的指針,但是可以將切片作為參數傳入函數,不是說數組不能作為入參,只是為了節省開銷。
在函數間傳遞數組是一個開銷很大的操作。在函數之間傳遞變量時,總是以值的方式傳遞的。如果整個變量是一個數組,意味着整個數組,不管有多長,都會完整復制,並傳遞給函數。所以一個更好且更有效的方法是可以只傳入指向數組的指針,這樣只需要復制8個字節的數據。
在64位架構的機器上,一個切片需要24字節的內存:指針字段需要8字節,長度和容量字段分別需要8字節。由於與切片關聯的數據包含在底層數組里,不屬於切片本身,所以將切片復制到任意函數的時候,對底層數組大小都不會影響。復制時只會復制切片本身,不會涉及底層數組。