三. 切片(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,...