Go語言基礎之陣列

2022-02-22 21:58:19 字數 3281 閱讀 7879

目錄

四、陣列的遍歷

五、多維陣列

六、陣列是值型別

七、練習題

go 從入門到放棄完整教程目錄(更有python、go、pytorch、tensorflow、爬蟲、人工智慧教學等著你):

更新、更全的《go從入門到放棄》的更新**,更有python、go、人工智慧教學等著你:

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

陣列是同一種資料型別元素的集合。

在go語言中,陣列從宣告時就確定,使用時可以修改陣列成員,但是陣列大小不可變化。

基本語法:

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

var a [3]int

var 陣列變數名 [元素數量]t
比如:var a \\[5\\]int

陣列的長度必須是常量,並且長度是陣列型別的一部分。一旦定義,長度不能變。

\\[5\\]int\\[10\\]int是不同的型別。

var a [3]int

var b [4]int

a = b //不可以這樣做,因為此時a和b是不同的型別

陣列可以通過下標進行訪問,下標是從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.printf("type of numarray:%t\n", numarray) //type of numarray:[2]int

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

fmt.printf("type of cityarray:%t\n", cityarray) //type of cityarray:[3]string

}

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

func main() 

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

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

}

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

func main() 

// 方法1:for迴圈遍歷

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

// 方法2:for range遍歷

for index, value := range a

}

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表示陣列指標 。

求陣列\\[1, 3, 5, 7, 8\\]所有元素的和

找出陣列中和為指定值的兩個元素的下標,比如從陣列\\[1, 3, 5, 7, 8\\]中找出和為8的兩個元素的下標分別為(0,3)(1,2)

Go語言基礎之陣列

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

Go語言基礎之陣列

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

十 Go語言基礎之陣列

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