數組 數組是具有相同唯一類型的一組已編號且長度固定的數據項序列(這是一種同構的數據結構);這種類型可以是任意的原始類型例如整形、字元串或者自定義類型(結構體、介面)。數組長度也是數組類型的一部分,所以[5]int和[10]int是屬於不同類型的。 :star::在其他語言中數組大多是引用類型,但 ...
數組
數組是具有相同唯一類型的一組已編號且長度固定的數據項序列(這是一種同構的數據結構);這種類型可以是任意的原始類型例如整形、字元串或者自定義類型(結構體、介面)。數組長度也是數組類型的一部分,所以[5]int和[10]int是屬於不同類型的。
⭐:在其他語言中數組大多是引用類型,但是在go語言中,數組是值類型
聲明方式
var + 數組名 + [數組長度] + 數組數據類型
(數組內部初始化全為0)
// 聲明一個長度為10的整型數組array,並初始化
var array [10]int
array = [10]int {0,1,2,3,4,5,6,7,8,9}
數組名 + ":=" + [數組長度] + 數據類型 + {數組初始化}
// 聲明一個長度為10的整型數組array併進行初始化
array := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
// 初始化過程也可以單獨初始化特定的位數(用逗號連接)
// 聲明一個長度為10的整型數組array並對數組的第5位進行初始化值為4,第3位進行初始化值為2
array := [10]int{5:4,3:2}
數組名 + ":=" + [...] + 數據類型 + {數組初始化}
("..."可以自動判斷數組長度)
// 聲明一個長度為10的整型數組array併進行初始化
array := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
數組使用
通過下標訪問數組的元素
array := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(arr[5])
遍曆數組
array := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
// i:數組下標 j: 下標對應的值
for i, j := range arr {
fmt.Printf("%d : %d \t", i, j)
}
數組賦值數組
數組可以給同它數據類型,數組長度相同的數組賦值
var array [10]int
arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
array = arr
指針數組
指針數組和數組本身差不多,只不過元素類型是指針
// 聲明一個長度為10的整型指針數組
// 併在第5,6,7位上創建記憶體空間
arr := [10]*int{5:new(int),6:new(int),7:new(int)}
// 在第三位上創建記憶體空間
arr[3] = new(int)
// 在第三位上的記憶體空間里賦值為3
*arr[3] = 3
// 輸出第三位對應的記憶體空間地址,以及值
fmt.Println(arr[3])
fmt.Println(*arr[3])
⭐:以上需要註意的是,只可以給第3,5,6,7位賦值,因為只有它們分配了記憶體,才可以賦值,如果我們給索引0賦值,運行的時候,會提示無效記憶體或者是一個nil指針引用。