關於Go語言slice切片個人學習心得

2021-08-20 11:19:17 字數 635 閱讀 7212

一句話概括切片就是:

切片實際上就是對陣列記憶體位址引用  而陣列本身就是乙個連續的記憶體位址 , 當超過了底層陣列的範圍之後就會分配乙個新的陣列給切片

結合下面**看一下就懂了

這裡有乙個很重要的cap的概念

var arr = [...]int

s1 := arr[2:6]

s1的列印值為[2,3,4,5] 但是 cap 實際上是[2,3,4,5,6,7]

[0,1,2,3,4,5,10,7]

[0,1,2,3,4,5,10,11]

原來的arr不再改變

所以得出了乙個結論

切片實際上是對底層陣列位址的引用操作 ,所以對切片後的陣列進行賦值操作時會影響到原來陣列的值 ,而當切片對元素操作超出了原陣列的長度時 ,這時候將會建立乙個新的陣列並開闢乙個記憶體位址給這個切片 ,而不再引用原陣列的位址 ,所以新的切片操作時原陣列的元素不會發生改變

Go語言切片 Slice

python裡面切片是一種操作,用於取list裡面元素。而go語言的切片則是一種資料型別,而不是一種操作。go語言中提供了切片 slice 作為一種更為靈活 功能強悍的內建型別,它其實是陣列的一種抽象。切片的原始碼 type slice struct slice是原陣列在記憶體中的位址的乙個指標,它...

Go語言核心 slice切片

slice是長度可變的元素序列 陣列不可變 每個元素都有相同的型別。slice型別寫作t,其中t代表slice中的元素型別 slice和陣列寫法很像,只是沒有指定長度。陣列和slice之間的聯絡非常緊密。slice是非常輕量的資料結構,它是引用型別,指向底層的乙個陣列,該陣列被稱之為slice的底層...

go語言基礎 切片 slice

理解為變長的陣列 a 切片建立 s1 int s2 make t,len,cap arr 5 int s3 arr start end 切割陣列 start,end s4 arr b 切片的型別 資料型別 切片屬於引用型別 s1 int s2 s1 packagemain import fmt fu...