GO學習筆記 3

2022-07-25 23:21:14 字數 2195 閱讀 7967

三. 切片(slice )

切片:切片是陣列的乙個引用,因此切片是引用型別;切片是可變陣列.

3.1. 切片定義

//建立切片 len()切片的長度 cap()切片的容量

func slicecreate()

fmt.println(reflect.typeof(s2)) //string

//使用make宣告

s3 := make(int, 5, 8)

fmt.println(reflect.typeof(s3), s3, len(s3),cap(s3)) // int [[0 0 0 0 0] 5 8

//初始化

s4 := int

fmt.println(reflect.typeof(s4), s4, len(s4),cap(s4)) // int [1 2 3 4 5] 5 5

//從陣列中切片

arr := [8]int

fmt.println(reflect.typeof(arr), len(arr),cap(arr)) // [8]int 8 8

//s5的容量為7,是因為切片只是把起始位置的指標向後移動到start位置,而end位置是保持不變的,以下同理

s5 := arr[1:4]

fmt.println(s5, len(s5),cap(s5)) // [2 3 4] 3 7s6 :=arr[:]

fmt.println(s6, len(s6),cap(s6)) // [1 2 3 4 5 6 7 8] 8 8s7 := arr[2:]

fmt.println(s7, len(s7),cap(s7)) // [3 4 5 6 7 8] 6 6s8 := arr[:3]

fmt.println(s8, len(s8),cap(s8)) // [1 2 3] 3 8s9 := s6[1:3]

fmt.println(s9, len(s9),cap(s9)) // [2 3] 2 7}

3.2. 切片訪問以及追加

3.3. 切片拷貝

3.4. 切片遍歷

func eachslice()  

for index, value :=range data

}

3.5. 字串切片

func slicestring()

3.6. 切片擴容

//擴容時,返回的切片不一定都是新陣列

//容量超過1024, 返回新陣列

s1 := make(int, 1000)

fmt.printf(

"%p, %d, %d \n

fmt.printf(

"%p, %d, %d \n

", &s2, len(s2), cap(s2)) // 0xc0000044e0, 1001, 2048

//容量在1024內,擴容時容量翻倍,返回新陣列

s3 := int

s4[1] = 100fmt.printf(

"%p, %d, %d, %v \n

", &s3, len(s3), cap(s3), s3) // 0xc000004500, 3, 3, [1 2 3]

fmt.printf(

"%p, %d, %d, %v \n

", &s4, len(s4), cap(s4), s4) // 0xc000004520, 4, 6, [1 100 3 5]

//所以這種情況下, 擴容以後的陣列還是指向原來的陣列, 修改切片元素就會影響到原陣列

s5 := [8]int

s6 := s5[:4]

s7[2] = 200fmt.printf(

"%p, %d, %d , %v\n

", &s5, len(s5), cap(s5), s5) // 0xc00000c340, 8, 8 , [1 2 200 4 100 6 7 8]

fmt.printf(

"%p, %d, %d , %v\n

", &s6, len(s6), cap(s6), s6) // 0xc000004580, 4, 8 , [1 2 200 4]

fmt.printf(

"%p, %d, %d , %v\n

", &s7, len(s7), cap(s7), s7) // 0xc0000045a0, 5, 8 , [1 2 200 4 100]

}

Go語言學習筆記(3)

1 go的協程本質上還是系統的執行緒呼叫,而python中的協程是eventloop模型實現,所以雖然都叫協程,但並不是乙個東西 encoding json 知識點1type m structjson反序列化成inte ce 對number的處理 當沒有指定型別的時候,預設情況下,json中的數字型...

GO學習筆記 3 變數和常量

識別符號是 中具有特殊意義的單詞,如變數名 常量名 函式名等。go語言中的識別符號由字母 數字和下劃線 組成,並且只能以字母或者下劃線開頭。例 abc,abc,abc 1,a123。關鍵字是程式語言中預先定義好的具有特殊含義的識別符號。關鍵字和保留字都不建議用作變數名。go餘元中有25個關鍵字 br...

Go學習筆記

使用關鍵字var定義變數,自動初始化為零值。如果提供初始化值,可省略變數型別。在函式內部,可用更簡略的 方式定義變數。空白符號 package main import fmt func test 2,0 函式內部 定義變數陣列data 0 data 1 data 2 並賦值0,1,2,且i 0 i,...