數組(Array)是具備相同類型的一組已編號且長度固定的數據項序列。數據存儲的類型能夠是任意的原始類型,例如整形、字符串或者自定義類型。數組
因爲內存連續分配存儲空間給數組,因此CPU能把正在使用的數據緩存更久的時間,而且由於內存連續因此索引很容易計算,能夠快速迭代數組中全部的元素。緩存
聲明數組:bash
Go 語言數組聲明須要指定存儲元素的類型及元素個數,一旦聲明以後元素類型和數組長度不能更改。 語法格式以下:函數
var variable_name [SIZE] variable_type
複製代碼
例如:ui
var balance [10] float32 // 一維數組 balance 長度爲 10 類型爲 float32
複製代碼
初始化數組:spa
初始化數組中 {} 中的元素個數不能大於 [] 中的數字。指針
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
複製代碼
若是忽略 [] 中的數字不設置數組大小,Go 語言會根據元素的個數來設置數組的大小:code
var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
複製代碼
數組元素能夠經過索引(位置)來讀取(或者修改),索引從0開始,第一個元素索引爲 0,第二個索引爲 1,以此類推。cdn
讀取或修改數組格式爲數組名後加中括號,中括號中爲索引的值。blog
修改數組:
balance[4] = 50.0
複製代碼
// range
for k, v := range balance {
fmt.Println(k, v)
}
// for 循環
var i int
for i = 0; i < 10; i++ {
fmt.Println(i, balance[i])
}
複製代碼
向函數傳遞數組:
要向函數傳遞數組參數,首先須要在函數定義時聲明形參爲數組,能夠經過如下兩種方式來聲明:
方式一
形參設定數組大小:
void myFunction(param [10]int) { ... } 複製代碼
方式二
形參未設定數組大小:
void myFunction(param []int) { ... } 複製代碼
實例:
package main import "fmt" func main() { /* 數組長度爲 5 */ var balance = []int {1000, 2, 3, 17, 50} var avg float32 /* 數組做爲參數傳遞給函數 */ avg = getAverage( balance, 5 ) ; /* 輸出返回的平均值 */ fmt.Printf( "平均值爲: %f ", avg ); // 平均值爲: 214.399994 } func getAverage(arr []int, size int) float32 { var i,sum int var avg float32 for i = 0; i < size;i++ { sum += arr[i] } avg = float32(sum) / float32(size) return avg; } 複製代碼
注意:被函數引用的形參數組是函數的一個副本,在函數內部改變形參數組,不會影響原來的數組,若是要改變就用指針數組。
多維數組的聲明:
var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type
複製代碼
二維數組
二維數組是最簡單的多維數組,二維數組本質上是由一維數組組成的。二維數組定義方式以下:
var arrayName [ x ][ y ] variable_type // variable_type是數據類型, arrayName是數組名
複製代碼
二維數組可認爲是一個表格,x 爲行,y 爲列,下圖演示了一個二維數組 a 爲三行四列:
初始化二維數組
多維數組可經過大括號來初始值。如下實例爲一個 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 */
複製代碼
訪問二維數組 經過指定座標(行索引與列索引)來訪問二維數組,例如:
val := a[2][3] // 二維數組 val 第三行的第四個元素
// 或
var value int = a[2][3]
複製代碼
能夠使用循環嵌套來輸出二維數組的元素:
package main
import "fmt"
func main() {
// 數組 - 5 行 2 列
var a = [5][2]int{ {0,0}, {1,2}, {2,4}, {3,6},{4,8}}
var i ,j int
// 輸出數組元素
for i = 0; i < 5; i++ {
for j = 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
複製代碼