go語言基礎 切片 slice

2021-08-19 13:36:27 字數 1694 閱讀 8757

理解為變長的陣列

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"

funcmain()

fmt.println(len(a))

fmt.println("陣列的:"

,len(a),cap(a))

// 建立切片1.直接建立

s1 := int

fmt.println(s1)

fmt.println("切片的:"

,len(s1),cap(s1)) // 8 8

fmt.printf("%t\n"

, s1) // int

s2 :=int{} // 建立了乙個空的切片

fmt.println(len(s2), cap(s2)) // 0 0

// 2.使用make(t, len,cap) cap如果不給數值,那麼和len一致。

s3 := make(int, 3

, 8)

fmt.println(s3) // [0 0 0]

fmt.println(len(s3),cap(s3)) // 3 8

//3.在陣列的基礎上建立切片

b := [10]int

s4 := b[2:6] // 陣列名[start:end)

fmt.println(s4)//[3 4 5 6]

fmt.println(len(s4), cap(s4)) // 4 8

s5 := b[:6] // [0:6],從頭開始,切割刀下標6(不包含6)

fmt.println(s5)

s6 :=b[6:] // [start:],從start開始,切割刀最後

fmt.println(s6)

//s7 := b[4:12] // invalid slice index 12 (out of bounds for 10-element array)

}

關鍵字

len()測量陣列或者切片的長度

cap()測量切片的總長度 ,如果超出最大值,切片會擴容

copy()拷貝切片

packagemain

import"fmt"

funcmain()

s2:=int

fmt.println(s1)

fmt.println(s2)

//copy(s1,s2) //將s2拷貝到s1中

//copy(s2, s1) // 將s1中的資料,拷貝到s2中。

//copy(s2, s1[2:4])// 將s1中3-4 的資料,拷貝到s2中

copy(s2[1:] , s1[2:4])

fmt.println(s1)

fmt.println(s2)

}

Go語言切片 Slice

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

go基礎之slice(切片)

slice low hight max low 起始位置 hight 結束位置 max 最大位置 容量 cap slice max low 長度 len slice hight lowslice len 型別 len不填寫 預設取初始化長度 eg slice 5 int 長度為5,容量為5 slic...

Go語言核心 slice切片

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