1、陣列(array)
陣列是乙個有相同資料型別的元素組成的固定長度的有序集合,如:var x [5]int,使用var定義的陣列,預設值如果整型為0,浮點型為0.0,字串為"",物件為nil。
求整型陣列之和,使用range函式,遍歷陣列、切片、字典時,返回索引和元素值;當對某個返回值不感興趣時,要用下劃線(_)來代替
package main定義陣列其他方式:1)、var x = [5]intimport
"fmt
"func main()
fmt.println(sum
)}
2)、var x =[5]int{}
x[0]=1
3)、var x = [...]string }
2、切片(slice)
切片類似陣列,切片長度是可變的;切片是有容量(capacity)和長度(length)兩個屬性的;切片變數使用時,索引不能大於等於切片長度,否則報錯out of range
1)、make函式定義切片
package main輸出如圖:import
"fmt
"func main()
fmt.println(x)
for i := 0; i < len(y); i++
fmt.println(y)
}
2)、通過陣列切片賦值,採用[low_index:high_index]方式擷取陣列來獲取數值切片,其中獲取包括low_index,不包括high_index,high_index不能大於陣列長度
使用案例如下
package main執行結果如下import
"fmt
"func main()
var s1 = arr1[2:3
] var s2 = arr1[:3
] var s3 = arr1[2
:] var s4 =arr1[:]
fmt.println(s1)
fmt.println(s2)
fmt.println(s3)
fmt.println(s4)
}
}執行結果如圖,可知切片擴容演算法是原來容量大小的兩倍;在測試**中發現,如果追加元素超過兩倍容量,後面擴容演算法就不會是倍數擴容了
4)、copy函式,複製切片中元素
package main執行結果如下,slice2長度為5,所以只拷貝了slice1的前五個元素import
"fmt
"func main()
slice2 := make(int, 5, 10
) copy(slice2, slice1)
fmt.println(slice1)
fmt.println(slice2)
}
5)、小總結一下,使用 := 方式定義切片,和陣列區別僅僅是方括號中是否有數字或 ...
示例如下,輸出結果都是:[1 2 3 4]
package main3、字典(map)import
"fmt
"func main()
fmt.println(arr1)
arr2 := [...]int
fmt.println(arr2)
arr3 := int
fmt.println(arr3)
}
字典是一組無序的,鍵值對的集合,字典也叫關聯陣列,陣列通過索引取數,字典通過鍵來取數
1)、初始化資料方式定義字典
package main執行結果import
"fmt
"func main()
for key, val :=range x
}
2)、make函式定義map,如果只定義,不初始化,使用會報錯
package main3)、使用 := 定義並初始化mapimport
"fmt
"func main()
}
package main4)、獲取字典中不存在的key值,如果是整數則返回0,字串返回 "";這樣的返回值,如果map中就是有值為0或空字串,就無法區分了import
"fmt
"func main()
}
使用 := 可以獲取map中元素值和是否存在的布林型別,如下
package main執行結果import
"fmt
"func main()
在實際使用中,可以如下判斷是否含有key值
package main輸出如下import
"fmt
"func main()
else
}
5)、map中使用delete函式刪除元素,如果不存在,刪除也不會報錯,不會有任何其他影響
package main執行結果import
"fmt
"func main()
6)、map複雜案例一:
package main輸出結果import
"fmt
"func main() 回車換行
facebook["
2018001
"] = map[string]int
facebook[
"2018002
"] = map[string]int
facebook[
"2018003
"] = map[string]int
for stu_no, stu_info :=range facebook
fmt.println()}}
map複雜案例二(執行結果和上面一樣)
package mainimport
"fmt
"func main() ,
"2018002
": ,
"2018003
": ,
}for stu_no, stu_info :=range facebook
fmt.println()}}
陣列 切片 字典 函式
目錄 1 陣列 切片 2 字典 3 函式 陣列和切片的區別就是乙個是固定長度乙個不固定。定長陣列 不定長陣列 names string字典和python的字典一樣的,也是key value。儲存的key是經過雜湊運算的。2.1 宣告方式 注意點1!使用字典一定要先分配空間 注意點2!在map中不存在...
golang 陣列和切片
陣列和切片的建立func main output 1 0 ps 陣列宣告時,所有元素預設值都是0。一般很少這樣做,盡量自己初始化。func main output panic runtime error index out of range goroutine 1 running main.main...
Go 陣列和切片
陣列擷取 a 開始索引位置,結束索引 切片 slice 是本身並非動態陣列和陣列指標,通過內部指標指向底層陣列。建立乙個length和capacity都等於5的slice slice make int,5 length 3,capacity 5的slice slice make int,3,5 建立...