Go語言基礎之陣列

2021-10-09 13:46:30 字數 2460 閱讀 3638

本文主要介紹陣列(array)及它的基本使用。

陣列是同一種資料型別元素的集合。 在go語言中,陣列從宣告時就確定,使用時可以修改陣列成員,但是陣列大小不可變化。 基本語法:

// 定義乙個長度為3元素型別為int的陣列a

var a [3]int

var 陣列變數名 [元素數量]t

比如:var a [5]int, 陣列的長度必須是常量,並且長度是陣列型別的一部分。一旦定義,長度不能變。[5]int[10]int是不同的型別。

陣列可以通過下標進行訪問,下標是從0開始,最後乙個元素下標是:len-1,訪問越界(下標在合法範圍之外),則觸發訪問越界,會panic。

初始化陣列時可以使用初始化列表來設定陣列元素的值。

func main() 

var cityarray = [3]string

fmt.println(testarray) //[0 0 0]

fmt.println(numarray) //[1 2 0]

fmt.println(cityarray) //[北京 上海 深圳]

}

這樣寫每次都要確保提供的初始值和陣列長度一致,但是一般情況下我們只需要讓編譯器根據初始值的個數自行推斷陣列的長度,例如:

func main() 

var cityarray = [...]string

fmt.println(testarray) //[0 0 0]

fmt.println(numarray) //[1 2]

fmt.println(cityarray) //[北京 上海 深圳]

}

我們還可以使用指定索引值的方式來初始化陣列,例如:

func main() 

fmt.println(a) // [0 1 0 5]

fmt.printf("type of a:%t\n", a) //type of a:[4]int

}

遍歷陣列a有以下兩種方法:

// 方法1:for迴圈遍歷

for i := 0; i < len(a); i++

// 方法2:range遍歷

for index, v := range a

注意:1. 陣列是值型別,賦值和傳參會複製整個陣列,而不是指標。因此改變副本的值,不會改變本身的值。 2. 支援 「==「、」!=」 操作符,因為記憶體總是被初始化過的。 3. 指標陣列 [n]*t,陣列指標 *[n]t。

go語言是支援多維陣列的,我們這裡以二維陣列為例(陣列中又巢狀陣列)。

func main() ,,,

}fmt.println(a) //[[北京 上海] [廣州 深圳] [成都 重慶]]

fmt.println(a[2][1]) //支援索引取值:重慶

}

func main() ,,,

}for _, v1 := range a

fmt.println()

}}

輸出:

北京 上海

廣州 深圳

成都 重慶

注意: 多維陣列只有第一層可以使用...來讓編譯器推導陣列長度。例如:

//支援的寫法

a := [...][2]string,,,

}//不支援多維陣列的內層使用...

b := [3][...]string,,,

}

陣列是值型別,賦值和傳參會複製整個陣列。因此改變副本的值,不會改變本身的值。

func modifyarray(x [3]int) 

func modifyarray2(x [3][2]int)

func main()

modifyarray(a) //在modify中修改的是a的副本x

fmt.println(a) //[10 20 30]

b := [3][2]int,,,

}modifyarray2(b) //在modify中修改的是b的副本x

fmt.println(b) //[[1 1] [1 1] [1 1]]

}注意:

陣列支援 「==「、」!=」 操作符,因為記憶體總是被初始化過的。

[n]*t表示指標陣列,*[n]t表示陣列指標 。

Go語言基礎之陣列

我的總結 乙個變數,指向一塊連續的,具有長度的,並且是相同型別的一塊記憶體。var 變數名 元素個數 元素型別示例 package main func main 注 var 變數名 元素個數 元素型別 等同於 var 變數名 變數型別 所以var name1 3 int var name2 4 in...

Go語言基礎之陣列

目錄 四 陣列的遍歷 五 多維陣列 六 陣列是值型別 七 練習題 go 從入門到放棄完整教程目錄 更有python go pytorch tensorflow 爬蟲 人工智慧教學等著你 更新 更全的 go從入門到放棄 的更新 更有python go 人工智慧教學等著你 本文主要介紹go語言中陣列 a...

十 Go語言基礎之陣列

本文主要介紹go語言中陣列 array 及它的基本使用。陣列是同一種資料型別元素的集合。在go語言中,陣列從宣告時就確定,使用時可以修改陣列成員,但是陣列大小不可變化。基本語法 定義乙個長度為3元素型別為int的陣列a var a 3 intvar 陣列變數名 元素數量 t比如 var a 5 in...