詳解go語言的array和slice 二

2021-09-07 14:55:13 字數 2701 閱讀 6795

//

建立乙個容量和長度均為6的slice

slice1 := int

//對slices1進行切片,長度為2容量為3

slice2 := slice1[1:3:3

] fmt.println(

"cap

", cap(slice2))

fmt.println(

"slice2

", slice2)

//修改乙個共同指向的元素

//兩個slice的值都會修改

slice2[0] = 11111

fmt.println(

"slice1

", slice1)

fmt.println(

"slice2

", slice2)

//增加乙個元素

) fmt.println(

"slice1:

", slice1)

fmt.println(

"slice2:

", slice2)

輸出結果

cap 2

slice2 [

2310

]slice1 [

511111102

6133

]slice2 [

1111110]

slice1: [

511111102

6133

]slice2: [

11111

1055555]

go語言內建乙個關鍵字range用於迭代集合,當然他也可以迭代slice,也可以使用  _  來忽略我們不關心的元素,但是如果只關心index則不需這麼寫 for index,_ := range slice1。下在給出完整**

//

建立乙個容量和長度均為6的slice

slice1 := int

for index, value :=range slice1

//可以忽略我們不關心的元素

//只關心value

for _, value :=range slice1

//只關心index, 可以不用 _

for index :=range slice1

//

建立乙個容量和長度均為6的slice

slice1 := int

for index, value :=range slice1

輸出結果

index:  0  value address :  0xc04204e088  slice1 value address 0xc04206a030

index:

1 value address : 0xc04204e088 slice1 value address 0xc04206a038

index:

2 value address : 0xc04204e088 slice1 value address 0xc04206a040

index:

3 value address : 0xc04204e088 slice1 value address 0xc04206a048

index:

4 value address : 0xc04204e088 slice1 value address 0xc04206a050

index:

5 value address : 0xc04204e088 slice1 value address 0xc04206a058

slice1中value的位址是不斷變化的。而迭代的value值的位址沒有變化,這是因為value是乙個變數,為次迭代的時候賦不同的值。我們把**寫成下面這樣,你就清楚了

var index, value int

for index, value =range slice1

除了使用rang 也可以使用傳統的for迴圈來做迭代

slice1 := int

for i, len := 1, len(slice1); i < len; i++

由於slice的特殊結構,有乙個指標指向乙個陣列

所以,slice做為方法的引數傳遞時,只會複製slice本身而不會複製slice底層的array.如果我們建立乙個int型別有100萬長度的slice ,把他傳遞給乙個方法時,只需要複製24個位元組就夠了。指標需要8個,長度和容量都是8個。

詳解go語言的array和slice 二

建立乙個容量和長度均為6的slice slice1 int 對slices1進行切片,長度為2容量為3 slice2 slice1 1 3 3 fmt.println cap cap slice2 fmt.println slice2 slice2 修改乙個共同指向的元素 兩個slice的值都會修改...

go語言基礎 陣列array

1.陣列 概念 儲存一組相同的資料型別的資料結構。特點 資料結構 記憶體上是連續空間。儲存資料特點 有序,可以重複。資料型別一致。定長 陣列一旦建立長度不能更改,但是可以更改儲存的資料。使用 建立陣列 var 陣列名 size 資料型別 0000000 var 陣列名 size 資料型別 陣列名 5...

C語言 array陣列的用法詳解

目錄 陣列是一種相同型別元素的集合 include include int main 不完全初始化,剩下的元素預設初始化0.char arr2 5 初始化 char arr 5 不完全初始化,剩下元素預設初始化0.初始化 char arr 5 ab 這是可行的,因為隱藏乙個 0 後面的0使我們自己給...