天天看點

008 Go語言基礎之數組

目錄

​​一、Array(數組)​​

​​二、數組定義:​​

​三、數組的初始化​

​​3.1 方法一​​

​​3.2 方法二​​

​​3.3 方法三​​

​​四、數組的周遊​​

​五、多元數組​

​​5.1 二維數組的定義​​

​​5.2 二維數組的周遊​​

​​六、數組是值類型​​

​​七、練習題​​

本文主要介紹Go語言中數組(array)及它的基本使用。

一、Array(數組)

數組是同一種資料類型元素的集合。在Go語言中,數組從聲明時就确定,使用時可以修改數組成員,但是數組大小不可變化。

基本文法:

二、數組定義:

比如:​<code>​var a [5]int​</code>​, 數組的長度必須是常量,并且長度是數組類型的一部分。一旦定義,長度不能變。 ​<code>​[5]int​</code>​和​<code>​[10]int​</code>​是不同的類型。

數組可以通過下标進行通路,下标是從​<code>​0​</code>​開始,最後一個元素下标是:​<code>​len-1​</code>​,通路越界(下标在合法範圍之外),則觸發通路越界,會panic。

三、數組的初始化

數組的初始化也有很多方式。

初始化數組時可以使用初始化清單來設定數組元素的值。

按照上面的方法每次都要確定提供的初始值和數組長度一緻,一般情況下我們可以讓編譯器根據初始值的個數自行推斷數組的長度,例如:

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

四、數組的周遊

周遊數組a有以下兩種方法:

五、多元數組

Go語言是支援多元數組的,我們這裡以二維數組為例(數組中又嵌套數組)。

輸出:

注意: 多元數組隻有第一層可以使用​<code>​...​</code>​來讓編譯器推導數組長度。例如:

六、數組是值類型

數組是值類型,指派和傳參會複制整個數組。是以改變副本的值,不會改變本身的值。

注意:

數組支援 “==“、”!=” 操作符,因為記憶體總是被初始化過的。

​<code>​[n]*T​</code>​表示指針數組,​<code>​*[n]T​</code>​表示數組指針 。

七、練習題

求數組​<code>​[1, 3, 5, 7, 8]​</code>​所有元素的和

找出數組中和為指定值的兩個元素的下标,比如從數組​<code>​[1, 3, 5, 7, 8]​</code>​中找出和為8的兩個元素的下标分别為​<code>​(0,3)​</code>​和​<code>​(1,2)​</code>​。