三 Golang學習筆記 切片

2021-10-14 06:56:44 字數 2461 閱讀 9210

陣列存在的問題:定義完,長度固定,不易擴充套件

切片:長度不固定,可以追加元素,可以理解成「動態陣列」,但不是陣列

func

main()

//3.使用make函式建立

//make(型別,長度(初始化空間),容量(初始化和空閒))

//長度不能大於容量,第三個引數可以省略

s :=

make([

]int,3

,5) fmt.

println

(cap

(s))

//cap函式獲取容量

}

func

main()

fmt.

println

(s)//追加資料

s =(s,99

,100

)//修改

s[0]

=78fmt.

println

(s[0])

函式s :=

make([

]int,3

,10) fmt.

println

(s) s[0]

=10//此法容易新增下標越界

//使用迴圈方式新增,小於的是長度,而不是容量

for i:=

0;i<

len(s)

;i++

//追加

s =(s,80

)}

func

main()

for i:=

0;i<

len(s)

;i++

for i,v =

range s

}

func

main()

s1 := s[0:

3:5]

fmt.

println

(s1)

//列印結果是3,5,6

fmt.

println

(cap

(s1)

) fmt.

println

(len

(s1)

)//s[:]

s1 := s[:]

fmt.

println

(s1)

//將切片的值全部列印出來

fmt.

println

(cap

(s1)

) fmt.

println

(len

(s1)

)//s[low:]

s1 := s[3:

]//從下標為3開始擷取

//s[:high]

s1 := s[:3

]//從0下標開始擷取到下標3前擷取

//s[low:high]

s1 := s[1:

3]//從1下標開始擷取到下標3前擷取

}

func

main()

s[0]

=30//修改

fmt.

println

(s)

s1 := s[2:

5]//不包含下標為5

fmt.

println

("s1="

,s1)

//3,4,5

//***修改新切片的值,舊切片的值也會發生改變***

//新切片指向了舊切片,都是同乙個切片

s1[0]

=80fmt.

println

("s1="

,s1)

//3,4,5

fmt.

println

("s="

,s)//

}

func

main()

func

main()

s1 :=

intcopy

(s1,s2)

//s1長度不夠,只能拷貝兩個值,s1變為3,4

copy

(s2,s1)

//同樣只變化前兩個值

}

func

main()

s :=

intinit

(s)}

func

init

(num [

]int

)//*************************************

//注意:切片在函式中修改切片的值,會影響到原切片

// 陣列在函式中修改陣列的值,不會影響到原陣列

}

Golang切片學習筆記

在 golang 中可以通過多種方式建立和初始化切片。是否提前知道切片所需的容量通常會決定如何建立切片。1.1 通過 make 函式建立切片 使用 golang 內建的 make 函式建立切片,此時需要傳入乙個引數來指定切片的長度 建立乙個整型切片 其長度和容量都是 5 個元素 slice make...

golang 切片學習

package main 這裡只說些自己理解的,當然切片的操作遠遠不止這些。import fmt reflect 學習切片首先要明白len和cap的區別。len 是儲存資料多少,cap 是容量大小。舉個例子乙個大會堂可以容納1000人這是cap,但是實際裡面隻座了100人這是len func mai...

golang筆記 Slice切片

sliceslice代表變長的序列,序列中每個元素都有相同的型別。語法和陣列很像,只是沒有固定長度。引用型別 動態陣列 從概念上來說,slice像乙個結構體,這個結構體包含了三個元素 乙個指標,指向陣列中slice指定的開始位置 長度,即slice的長度 最大長度,也就是slice開始位置到陣列的最...