go基礎——陣列array
阿新 • • 發佈:2021-10-16
package main import "fmt" /* 陣列: array陣列屬於值型別,儲存的是數值本身,資料傳遞給其他變數時傳遞的是資料的副本。 slice,map等屬於引用型別,儲存的是資料的記憶體地址。 */ func main() { //陣列建立和訪問 var arr1 [4]int //建立陣列,定長 arr1[0] = 1 arr1[1] = 2 arr1[2] = 3 arr1[3] = 4 fmt.Println(arr1[0], arr1[2]) //長度和容量,array/map/slice/string通用 fmt.Println(len(arr1)) //長度,容器中實際儲存的資料量 fmt.Println(cap(arr1)) //容量,容器中能夠儲存的最大資料量 fmt.Println("==============") //陣列的其他建立方式 var arr2 = [5]int{1, 2, 3} //未定義的位置為0 fmt.Println(arr2) var arr3 = [5]int{1: 1, 3: 2} fmt.Println(arr3) var arr4 = [5]string{"rose", "小王", "ruby"} //未定義的位置為空字串 fmt.Println(arr4) arr5 := [...]int{1, 2, 3} arr6 := [...]int{1: 4, 5: 3} fmt.Println(len(arr5), cap(arr5)) fmt.Println(len(arr6), cap(arr6)) fmt.Println("==============") //陣列的遍歷 for i := 0; i < len(arr1); i++ { arr1[i] = arr1[i]*2 + 1 } fmt.Println(arr1) for i, v := range arr1 { fmt.Printf("下標%d,數值%d\n", i, v) } fmt.Println("==============") //陣列的排序(冒泡) arr := [5]int{15, 23, 8, 10, 7} for i := 1; i < len(arr); i++ { for j := 0; j < len(arr)-i; j++ { if arr[j] > arr[j+1] { arr[j], arr[j+1] = arr[j+1], arr[j] } } } fmt.Println(arr) fmt.Println("==============") //二維陣列 a := [2][3]int{{1, 2, 3}, {4, 5, 6}} fmt.Println(a[0][1]) //第一個一維陣列中的第二個元素 //遍歷 for i := 0; i < len(a); i++ { for j := 0; j < len(a[i]); j++ { fmt.Print(a[i][j], "\t") } fmt.Println() //換行 } //range遍歷 for _, arr_v1 := range a { for _, val := range arr_v1 { fmt.Print(val, "\t") } fmt.Println() } }
執行結果
1 3
4
4
==============
[1 2 3 0 0]
[0 1 0 2 0]
[rose 小王 ruby ]
3 3
6 6
==============
[3 5 7 9]
下標0,數值3
下標1,數值5
下標2,數值7
下標3,數值9
==============
[7 8 10 15 23]
==============
2
1 2 3
4 5 6
1 2 3
4 5 6