go 声明二维数组_一篇文章了解Go语言中数组Arrays的使用内幕
概述
與其他編程語言類似,Go語言也有數(shù)組array。Go語言中,數(shù)組的行為和其他語言沒有什么不同.Go語言中還有一個叫做切片slice的東西,它就像是對數(shù)組的引用。在本文中,我們將只研究數(shù)組。
定義
數(shù)組是同一類型元素的連續(xù)集合,它是連續(xù)存儲在內(nèi)存中的有序元素序列。
下面是數(shù)組聲明的格式:
- size_of_array:數(shù)組大小或數(shù)組長度,表示數(shù)組中所有元素的數(shù)量
- type :數(shù)組元素類型,表示數(shù)組中每一個元素的類型
- a1, a2 … an:表示數(shù)組中實(shí)際的元素值
Go語言中,數(shù)組的大小是其類型的一部分。這意味著兩個擁有不同數(shù)量元素的數(shù)組是兩種不同的類型,它們不能互相賦值。如果我們試圖賦值兩個不同長度的數(shù)組,將引發(fā)以下錯誤:
下面是代碼示例:
出于同樣的原因,數(shù)組的長度在創(chuàng)建時是固定的,以后不能更改。
數(shù)組的聲明
元素數(shù)量和元素值在數(shù)組聲明中都是可選的。
在下面的示例中,我們看到了聲明數(shù)組的4種方法。
同時聲明數(shù)組長度和元素值,如下所示:
只聲明數(shù)組長度,這種情況下,所有實(shí)際元素值都是該類型的默認(rèn)零值填充,如下所示:
只聲明元素值,這種情況下,數(shù)組的長度將等于實(shí)際元素的數(shù)目。當(dāng)不指定長度時,需要將符號...放在方括號內(nèi)。該符號是讓編譯器計算數(shù)組長度的指令。
不聲明數(shù)組長度和元素值,這種情況下,創(chuàng)建的是一個空數(shù)組,類似于上面,符號...也需要使用。
下面是以上4種數(shù)組聲明的代碼示例。內(nèi)置函數(shù)len()是用于計算數(shù)組的長度。在下面的程序中,我們使用len()函數(shù)來計算數(shù)組的長度。
請注意,在上面的示例中,對于sample3變量,實(shí)際的元素值被int類型的默認(rèn)值填充,即0。
如果指定的實(shí)際元素個數(shù)小于數(shù)組的長度,也是可以,其余元素將使用該類型的默認(rèn)零值填充。請參見下面的示例,指定的數(shù)組長度為4,而只聲明了2個實(shí)際元素值,因此,剩下的兩個元素被賦值為0,這是int類型的默認(rèn)零值。
訪問數(shù)組元素
由于數(shù)組元素是以連續(xù)的方式存儲的,所以我們可以通過索引來訪問數(shù)組元素。同樣,也可以使用索引為某個數(shù)組元素賦值。訪問越界索引將導(dǎo)致編譯錯誤。請參閱下面的示例,第一個索引位置為零,最后一個索引為數(shù)組長度減1(length_of_array-1)
取消對下面這行代碼的注釋:
你就會得到一條編譯錯誤:
Go語言中的數(shù)組是值
數(shù)組在Go語言中的屬于值類型,所以數(shù)組變量名不是指向第一個元素的指針,實(shí)際上它表示整個數(shù)組。
當(dāng)以下情形發(fā)生時,一個數(shù)組的副本會被創(chuàng)建:
- 一個數(shù)組變量被賦值給另一個數(shù)組變量
- 數(shù)組變量作為參數(shù)傳遞給函數(shù)
讓我們用另一個例子來看看:
在上面的例子中,
- 我們將sample1賦值給sample2,然后將sample2處的第0個索引的元素更改為不同的值。之后,當(dāng)我們打印sample1時,我們看到它沒有改變。這是因?yàn)楫?dāng)將sample1賦值給sample2時,會創(chuàng)建一個副本賦給它,而更改sample2對sample1沒有任何影響。
- 我們將sample1傳遞給test函數(shù),然后在test函數(shù)的第0個索引處再次更改其值。當(dāng)我們再次打印sample1時,看到它仍然沒有任何改變。原因是相同的,當(dāng)sample1作為參數(shù)傳遞給test函數(shù)時,會創(chuàng)建sample1的副本。
迭代數(shù)組的不同方法
可以使用以下方法迭代一個數(shù)組:
- 使用for循環(huán)
- 使用for-range循環(huán)
讓我們看看下面的代碼示例:
多維數(shù)組
下面是聲明一個二維數(shù)組的格式:
其中,
- x表示行數(shù)
- y表示列數(shù)
- aij表示i行j列的元素
同樣的想法可以擴(kuò)展到三維、四維等等。我們上面討論的所有規(guī)則也適用于多維數(shù)組。
讓我們看一個代碼示例:
在上面的例子中,我們使用第一和第二維的索引來訪問二維數(shù)組的元素
還要注意我們是如何遍歷二維數(shù)組的。我們需要使用嵌套的range。第一個range遍歷二維數(shù)組里的一維數(shù)組,第二個range遍歷各個一維數(shù)組。
結(jié)論
這就是Go語言中關(guān)于數(shù)組的所有使用內(nèi)幕,希望你喜歡這篇文章。請在評論中分享反饋和關(guān)注。
總結(jié)
以上是生活随笔為你收集整理的go 声明二维数组_一篇文章了解Go语言中数组Arrays的使用内幕的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摩尔庄园秋千怎么获得
- 下一篇: python 入门到实践期末考试常出现的