# Go 語言數組
Go 語言提供了數組類型的數據結構。
數組是具有相同唯一類型的一組已編號且長度固定的數據項序列,這種類型可以是任意的原始類型例如整形、字符串或者自定義類型。
相對于去聲明number0, number1, ..., and number99的變量,使用數組形式numbers[0], numbers[1] ..., numbers[99]更加方便且易于擴展。
數組元素可以通過索引(位置)來讀取(或者修改),索引從0開始,第一個元素索引為 0,第二個索引為 1,以此類推。

## 聲明數組
Go 語言數組聲明需要指定元素類型及元素個數,語法格式如下:
```
var variable_name [SIZE] variable_type
```
以上為一維數組的定義方式。數組長度必須是整數且大于 0。例如以下定義了數組 balance 長度為 10 類型為 float32:
```
var balance [10] float32
```
## 初始化數組
以下演示了數組初始化:
```
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
```
初始化數組中 {} 中的元素個數不能大于 [] 中的數字。
如果忽略 [] 中的數字不設置數組大小,Go 語言會根據元素的個數來設置數組的大小:
```
var balance = []float32{1000.0, 2.0, 3.4, 7.0, 50.0}
```
該實例與上面的實例是一樣的,雖然沒有設置數組的大小。
```
balance[4] = 50.0
```
以上實例讀取了第五個元素。數組元素可以通過索引(位置)來讀取(或者修改),索引從0開始,第一個元素索引為 0,第二個索引為 1,以此類推。

## 訪問數組元素
數組元素可以通過索引(位置)來讀取。格式為數組名后加中括號,中括號中為索引的值。例如:
```
float32 salary = balance[9]
```
以上實例讀取了數組balance第10個元素的值。
以下演示了數組完整操作(聲明、賦值、訪問)的實例:
```
package main
import "fmt"
func main() {
var n [10]int /* n 是一個長度為 10 的數組 */
var i,j int
/* 為數組 n 初始化元素 */
for i = 0; i < 10; i++ {
n[i] = i + 100 /* 設置元素為 i + 100 */
}
/* 輸出每個數組元素的值 */
for j = 0; j < 10; j++ {
fmt.Printf("Element[%d] = %d\n", j, n[j] )
}
}
```
以上實例執行結果如下:
```
Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109
```
## 更多內容
數組對 Go 語言來說是非常重要的,以下我們將介紹數組更多的內容:
| 內容 | 描述 |
| --- | --- |
| [多維數組](go-multi-dimensional-arrays.html) | Go 語言支持多維數組,最簡單的多維數組是二維數組 |
| [向函數傳遞數組](go-passing-arrays-to-functions.html) | 你可以像函數傳遞數組參數 |
- Go 語言簡介
- Go 語言環境安裝
- Go 語言結構
- Go 語言基礎語法
- Go 語言數據類型
- Go 語言變量
- Go 語言常量
- Go 語言運算符
- Go 語言條件語句
- Go 語言 if 語句
- Go 語言 if...else 語句
- Go 語言 if 語句嵌套
- Go 語言 switch 語句
- Go 語言 select 語句
- Go 語言循環語句
- Go 語言 for 循環
- Go 語言循環嵌套
- Go 語言 break 語句
- Go 語言 continue 語句
- Go 語言 goto 語句
- Go 語言函數
- Go 語言函數值傳遞值
- Go 語言函數引用傳遞值
- Go 語言函數作為值
- Go 語言函數閉包
- Go 語言函數方法
- Go 語言變量作用域
- Go 語言數組
- Go 語言多維數組
- Go 語言向函數傳遞數組
- Go 語言指針
- Go 語言指針數組
- Go 語言指向指針的指針
- Go 語言指針作為函數參數
- Go 語言結構體
- Go 語言切片(Slice)
- Go 語言范圍(Range)
- Go 語言Map(集合)
- Go 語言遞歸函數
- Go 語言類型轉換
- Go 語言接口
- Go 錯誤處理
- Go 語言開發工具