# Go 數組
- 數組是一個具有`相同數據類型`的元素組成的`固定長度`的`有序集合`。
- 在Go語言中,數組是值類型,長度是類型的組成部分,也就是說"`[10]int`"和“`[20]int`”是完全不同的兩種數組類型。
- 同類型的兩個數組支持"=="和"!="比較,但是不能比較大小。
- 數組作為參數時,函數內部不改變數組內部的值,除非是傳入數組的指針。
- 數組的指針:*[3]int
- 指針數組:[2]*int
示例1:
```go
package main
import "fmt"
func main() {
// 這里我們創建了一個具有5個元素的整型數組
// 元素的數據類型和數組長度都是數組的一部分
// 默認情況下,數組元素都是零值
// 對于整數,零值就是0
var a [5]int
fmt.Println("emp:", a)
// 我們可以使用索引來設置數組元素的值,就像這樣
// "array[index] = value" 或者使用索引來獲取元素值,
// 就像這樣"array[index]"
a[4] = 100
fmt.Println("set:", a)
fmt.Println("get:", a[4])
// 內置的len函數返回數組的長度
fmt.Println("len:", len(a))
// 這種方法可以同時定義和初始化一個數組
b := [5]int{1, 2, 3, 4, 5}
fmt.Println("dcl:", b)
// 數組都是一維的,但是你可以把數組的元素定義為一個數組
// 來獲取多維數組結構
var twoD [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}
```
輸出結果為
```
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
2d: [[0 1 2] [1 2 3]]
```
`擁有固定長度`是數組的一個特點,但是這個特點有時候會帶來很多不便,尤其在一個集合元素個數不固定的情況下。這個時候我們更多地使用`切片`。
示例2:
可以用new創建數組,并返回數組的指針
```go
package main
import "fmt"
func main() {
var a = new([5]int)
test(a)
fmt.Println(a, len(a))
}
func test(a *[5]int) {
a[1] = 5
}
```
輸出結果:
```
&[0 5 0 0 0] 5
```
示例3:
```go
package main
import "fmt"
func main() {
a := [...]User{
{0, "User0"},
{8, "User8"},
}
b := [...]*User{
{0, "User0"},
{8, "User8"},
}
fmt.Println(a, len(a))
fmt.Println(b, len(b))
}
type User struct {
Id int
Name string
}
```
輸出結果:
```
[{0 User0} {8 User8}] 2
[0x1f216130 0x1f216140] 2
```
- 版權
- 內容
- Go常量
- Go變量
- Go 數值
- Go 數組
- Go 字典
- Go 函數定義
- Go 方法
- Go 結構體
- Go 閉包函數
- Go 接口
- Go 字符串操作函數
- Go 字符串格式化
- Go 自定義排序
- Go Base64編碼
- Go Defer
- Go Exit.md
- Go for循環
- Go if..else if..else 條件判斷
- Go JSON支持
- Go Line Filters
- Go 狀態協程
- Go Panic
- Go range函數
- Go SHA1 散列
- Go String與Byte切片之間的轉換
- Go Switch語句
- Go URL解析
- Go 遍歷通道
- Go 并行功能
- Go 并行通道Channel
- Go 超時
- Go 錯誤處理
- Go 打點器
- Go 遞歸函數
- Go 讀取文件
- Go 工作池
- Go 關閉通道
- Go 函數多返回值
- Go 函數回調
- Go 函數命名返回值
- Go 互斥
- Go 環境變量
- Go 集合功能
- Go 計時器
- Go 進程觸發
- Go 進程執行
- Go hello world
- Go 可變長參數列表
- Go 命令行參數
- Go 命令行參數標記
- Go 排序
- Go 切片
- Go 請求處理頻率控制
- Go 時間
- Go 時間戳
- Go 時間格式化和解析
- Go 數字解析
- Go 隨機數
- Go 通道的同步功能
- Go 通道方向
- Go 通道緩沖
- Go 通道選擇Select
- Go 寫入文件
- Go 信號處理
- Go 原子計數器
- Go 正則表達式
- Go 指針