Go語言數組
Go 語言提供了數組類型的數據結構。
數組是具有相同唯一類型的一組已編號且長度固定的數據項序列,這種類型可以是任意的原始類型例如整形、字符串或者自定義類型。
相對於去聲明number0, number1, ..., and number99的變量,使用數組形式numbers[0], numbers[1] ..., numbers[99]更加方便且易於擴展。
數組元素可以通過索引(位置)來讀取(或者修改),索引從0開始,第一個元素索引為 0,第二個索引為 1,以此類推。
Go 語言數組聲明需要指定元素類型及元素個數,語法格式如下:
varvariable_name[SIZE] variable_type
以上為一維數組的定義方式。數組長度必須是整數且大於 0。例如以下定義了數組 balance 長度為 10 類型為 float32:
varbalance[10] float32
初始化數組
以下演示了數組初始化:
varbalance=[5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
初始化數組中 {} 中的元素個數不能大於 [] 中的數字。
如果忽略 [] 中的數字不設置數組大小,Go 語言會根據元素的個數來設置數組的大小:
varbalance=[...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
該實例與上面的實例是一樣的,雖然沒有設置數組的大小。
balance[4] =50.0
以上實例讀取了第五個元素。數組元素可以通過索引(位置)來讀取(或者修改),索引從0開始,第一個元素索引為 0,第二個索引為 1,以此類推。
訪問數組元素
數組元素可以通過索引(位置)來讀取。格式為數組名後加中括號,中括號中為索引的值。例如:
varsalaryfloat32=balance[9]
以上實例讀取了數組balance第10個元素的值。
以下演示了數組完整操作(聲明、賦值、訪問)的實例:
packagemain
import"fmt"
funcmain() {
varnumbers[5] int
fori:=0; inumbers[i] =i+10
}
fori:=0; ifmt.Printf("numbers[%d] = %d\n",i,numbers[i]);
}
}
以上程序運行結果為:
numbers[0] =10
numbers[1] =11
numbers[2] =12
numbers[3] =13
numbers[4] =14
數組對 Go 語言來說是非常重要的,以下我們將介紹數組更多的內容:
多維數組
Go 語言支持多維數組,以下為常用的多維數組聲明方式:
varvariable_name[SIZE1][SIZE2]...[SIZEN] variable_type
varthreedim[5][10][4]int
二維數組
二維數組是最簡單的多維數組,二維數組本質上是由一維數組組成的。二維數組定義方式如下:
vararrayName[ x][ y] variable_type
variable_type 為 Go 語言的數據類型,arrayName 為數組名,二維數組可認為是一個表格,x 為行,y 為列,下圖演示了一個二維數組 a 為三行四列:
二維數組中的元素可通過 a i 來訪問。
初始化二維數組
多維數組可通過大括號來初始值。以下實例為一個 3 行 4 列的二維數組:
a=[3][4]int{
{0, 1, 2, 3} , /* 第一行索引為 0 */
{4, 5, 6, 7} , /* 第二行索引為 1 */
{8, 9, 10, 11}, /* 第三行索引為 2 */
}
注意:以上代碼中倒數第二行的 } 必須要有逗號,因為最後一行的 } 不能單獨一行,也可以寫成這樣:
a=[3][4]int{
{0, 1, 2, 3} , /* 第一行索引為 0 */
{4, 5, 6, 7} , /* 第二行索引為 1 */
{8, 9, 10, 11}} /* 第三行索引為 2 */
訪問二維數組
二維數組通過指定座標來訪問。如數組中的行索引與列索引,例如:
intval=a[2][3]
以上實例訪問了二維數組 val 第三行的第四個元素。
二維數組可以使用循環嵌套來輸出元素:
packagemain
import"fmt"
funcmain() {
/* 數組 - 5 行 2 列*/
vara=[5][2]int{ {0,0}, {1,2}, {2,4}, {3,6},{4,8}}
vari, jint
/* 輸出數組元素 */
for i=0; i<5; i++{
forj=0; j<2; j++{
fmt.Printf("a[%d][%d] = %d\n", i,j, a[i][j] )
}
}
}
以上實例運行輸出結果為:
a[0][0] = 0
a[0][1] = 0
a[1][0] = 1
a[1][1] = 2
a[2][0] = 2
a[2][1] = 4
a[3][0] = 3
a[3][1] = 6
a[4][0] = 4
a[4][1] = 8
Go 語言向函數傳遞數組
如果你想向函數傳遞數組參數,你需要在函數定義時,聲明形參為數組,我們可以通過以下兩種方式來聲明:
方式一
形參設定數組大小:
voidmyFunction(param[10]int)
{
.
.
.
}
方式二
形參未設定數組大小:
voidmyFunction(param[]int)
{
.
.
.
}
讓我們看下以下實例,實例中函數接收整型數組參數,另一個參數指定了數組元素的個數,並返回平均值:
funcgetAverage(arr[]int, sizeint) float32
{
variint
varavg, sumfloat32
fori=0; i<size> sum+=arr[i]
}
avg=sum/size
returnavg;
}
/<size>
接下來我們來調用這個函數:
packagemain
import"fmt"
funcmain() {
/* 數組長度為 5 */
var balance=[]int{1000, 2, 3, 17, 50}
varavgfloat32
/* 數組作為參數傳遞給函數 */
avg=getAverage( balance, 5) ;
/* 輸出返回的平均值 */
fmt.Printf( "平均值為: %f ", avg);
}
funcgetAverage(arr[]int, sizeint) float32{
vari,sumint
varavgfloat32
fori=0; i<size> sum+=arr[i]
}
avg=float32(sum) /float32(size)
returnavg;
}
/<size>
以上實例執行輸出結果為:
平均值為: 214.399994
閱讀更多 科技伍小黑 的文章