slice這種數據結構便於使用和管理數據集合,能夠理解爲是一種「動態數組」,slice
也是圍繞動態數組的概念來構建的。既然是動態數組,那麼slice是如何擴容的呢?git
請記住如下兩條規則:github
知道了一下規則,請看下面程序,試問輸出結果:數組
1 |
import ( |
輸出:數據結構
1 |
[10 20] |
上述程序中,因爲擴容了三次,超過了原始數組的容量,因此把原始數組拷貝過來,對新切片的修改並不影響原始數組的值。從而打印原始數組不影響原數組。app
若是:ui
1 |
import ( |
則輸出:spa
1 |
[10 21] |
因爲擴容了兩次,沒有超過原始數組的容量,因此新切片指針仍是指向原始數組,對新切片的修改既對原始數組的修改。從而打印原始數組爲修改過的原數組。指針