這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
1、定義一個 array
數組長度也是類型的一部分,比如長度為3的int數組與長度為5的int數組,並不是同一類型。
package mainimport ( "strconv" //GO語言中將 int 轉化成 string 比較麻煩,通常使用 strconv.Itoa(i))//格式化輸出一個數組,因為不同長度的數組屬於不同類型,這裡只能用切片作為參數,調用時將數群組轉換成切片傳入即可func print_array(arr []int) { var str string str = "[" for k, v := range arr { if k == len(arr)-1 { str = str + strconv.Itoa(v) } else { str = str + strconv.Itoa(v) + "," } } str += "]" println(str)}func main() { //1、指明數組長度: 初始化的元素個數應該小於等於數組長度,否則會編譯出錯,如果初始化的元素長度小於數組個數,則未初始化部分系統會自動補為預設零值 array1 := [3]int{} //相當於 [0,0,0] print_array(array1[:]) array2 := [3]int{1, 2} //相當於 [1,2,0] print_array(array2[:]) //arr := [3]int{1, 2, 3, 4} //初始化元素個數如果大於數組長度,則會編譯出錯 array3 := [3]int{1: 2, 2: 3} //相當於[0,2,3] ,同 struct 一樣,GO同樣支援初始化時指定key,這裡的key表示索引,未初始化的索引值為預設零值 print_array(array3[:]) //2、不指明數組長度: 數組的長度由初始化的元素決定 array4 := [...]int{1, 2, 3} //相當於 [1,2,3] print_array(array4[:]) array5 := [...]int{1: 2, 2: 3} //相當於 [0,2,3] print_array(array5[:])}
2、數組操作
通過數組名和數組下標即可進行訪問和修改操作,通過 for .. range 可以進行遍曆操作。因為數組的長度是固定的,也沒有容量概念,所以概念和使用上都是比較簡單的。
for ... range 可以用於 array\slice\map 的遍曆,如果對 string 進行遍曆,則預設得到的 value 值是對應字元的ASCII碼,這一點需要注意。
//以下會輸出 97,98,99,100, s := "abcd" for _, v := range s { print(v, ",") }
3、數組的特性
GO語言中的數組是實值型別,當賦值給另一個陣列變數或作為方法參數傳遞時,都會複製數組的副本。
注意,與C語言不同,數組的名字不代表數組的第一個元素的指標,這兩種語言的數組儲存結構不同,GO語言的數組儲存結構是,首部儲存數組長度,然後後面是實際資料。