區塊鏈技術語言(十六):Go語言陣列
陣列是Go語言程式設計中最常用的資料結構之一。本節從以下角度介紹陣列:陣列的定義和基本要素、陣列的宣告和初始化、陣列元素的編號及陣列元素的獲取和修改、陣列變數之間的比較和賦值、指標陣列和陣列指標、陣列作為函式引數的傳遞方式和二維陣列。
1
陣列定義和基本要素
1.1 陣列的定義
陣列是一系列已編號、長度固定的同一型別資料項序列。
1.2 陣列元素
陣列中包含的每個資料被稱為陣列元素,元素型別可以為整形、字串或者自定義型別。
1.3 陣列長度
陣列長度在定義後就已經確定且不能更改,在宣告時長度可以為一個常量或常量表達式,即在編譯期就可以計算結果。在Go語言裡,可以通過內建函式 len()或者cap()得到陣列長度(元素數量):

2
陣列的宣告和初始化
2.1 陣列宣告
陣列宣告的關鍵詞是var,陣列型別不同於變數或者常量型別,陣列型別既包含了陣列長度,也包含了陣列元素的型別,即:
注:
a. 需要指定元素型別及元素個數;
b. 陣列長度必須是常數,必須是大於等於0的整數;
c. 陣列長度是型別的組成部分,即不同長度的陣列型別不同。
2.2 陣列的初始化
陣列的初始化就是給陣列的變數名賦初值。如果陣列僅宣告而沒有初始化,則此陣列元素取預設值。
陣列的初始化有如下幾種方式,如表1所示。

注:
a. 陣列宣告卻沒有初始化,元素取零值;
b. 陣列長度位置是''...'',則陣列長度由初始化陣列元素的個數決定;
c. 通過索引號初始化元素,未初始化元素值為零值(預設值);
d. 初始化陣列中{}中的元素個數不能大於[]中的數字。

3
陣列元素的編號及陣列元素的獲取和修改
3.1 陣列元素編號
陣列是一系列已編號、長度固定的同一型別的資料項序列。陣列通過索引編號,從0開始,即第一個元素索引為 0,第二個元素索引為1,以此類推,第n個元素索引為n-1,如圖1所示。
3.2 陣列元素的獲取和修改
陣列完成宣告初始化後,可以通過索引(位置)來讀取或修改,格式為:

4
陣列之間的比較和賦值
4.1 陣列之間的比較
陣列之間可以使用“==” 或“!=” 進行比較,但不可以使用''<''或''>''。
兩個陣列相等,要同時滿足兩個條件:陣列長度相等、陣列對應位置的元素值相等。否則,兩個陣列不相等。

4.2 陣列之間的賦值
兩個陣列之間賦值,需要同時滿足兩個條件:陣列長度相等、陣列元素型別相同。

5
指標陣列和陣列指標
5.1 指標陣列
5.1.1 定義
指標陣列,即指標的陣列。其本質是一個數組,陣列元素是指標。
5.1.2 宣告格式
指標陣列的宣告格式與陣列的宣告類似,只需要在陣列元素的型別前加上*,如下所示:

示例如下:

5.2 陣列指標
5.2.1 定義
陣列指標,即陣列的指標。它本質是一個指標,指向一個數組的首地址。
5.2.2 宣告格式
陣列指標的宣告格式類似於一般指標變數的宣告,在中括號之前新增*,如下所示:

示例如下:

6
陣列作為函式引數
在函式那一章節我們已經介紹了兩種引數傳遞方式:值傳遞和引用傳遞。每個傳遞方式中,實參和形參的型別要一一對應。而陣列也可以作為函式引數。
6.1 值傳遞
當實參為陣列時,形參也必須是同一型別的陣列,即:陣列長度相等,陣列元素型別相同。當實參和形參均為陣列時,引數的傳遞方式為值傳遞,即呼叫函式時將陣列(實參)複製一份傳遞到函式中,在函式中對複製的陣列(形參)進行修改,將不會影響到實際引數。

6.2 引用傳遞
當實參是“&陣列變數名”,則形參必須是相對應的陣列指標(兩個陣列是同一型別)。在呼叫函式時將實際引數的地址(指標)傳遞到函式中,在函式中對陣列指標(形參)的修改,將影響到實際引數。

7
二維陣列
Go語言支援多維陣列,其中二維陣列是最簡單的多維陣列。
7.1 宣告格式
二維陣列本質上是由一維陣列組成的。二維陣列定義方式如下:

7.2 陣列元素訪問
二維陣列中的元素通過指定座標來訪問,訪問格式如下:

7.3 初始化
二維陣列的初始化類似於一維陣列的初始化,如表2所示。

ofollow,noindex"> 原文連結:區塊鏈技術語言(十六):Go語言陣列
參考資料
本文完,獲取更多資訊,敬請關注區塊鏈工程師。
來源:鏈塊學院
本文由布洛克專欄作者釋出,代表作者觀點,版權歸作者所有,不代表布洛克科技觀點
——TheEnd——
關注“布洛克科技”