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

使用數組的步驟
1. 聲明數組并開辟空間,初始化數組。
2. 給數組各個元素賦值 ( 默認零值 )
3. 使用數組 ==>讀數組,寫數組
聲明數組
Go 語言數組聲明需要指定元素類型及元素個數,語法格式如下:
var array_name [SIZE]array_type => var a [10]int
c 語言的數組:
array_type array_name[size]; => int a [10];
以上為一維數組的定義方式。數組長度 SIZE 必須是整數且大于 0 。
數組的下標是從 0 開始的 , 數組下標必須在指定范圍內使用,否則報 panic
數組中的元素可以是任何數據類型,包括值類型和引用類型,但是不能混用。
數組創建后,如果沒有賦值,有默認值 ( 零值 )
數值類型數組:默認值為 0 , 字符串數組: 默認值為 "" , bool 數組: 默認值為 false。
1 、聲明數組并開辟空間
// 例如以下定義了數組 f 長度為 10 ,類型為 float32 :
var f [10] float32
// 定義一個長度為 3 元素類型為 int 的數組 a
var a [3]int
在沒有明確內存存儲位置的時候,默認在棧區。
其他聲明方式:
[32] byte // 長度為 32 的字節數組
[2*N] struct {x, y int32} // 復雜類型數組
[100] *float64 // 指針數組
[3][5] int // 二維數組
[2][2][2] float64 // 等同于 [2]([2]([2]float64))
注意:數組的長度必須是常量,并且長度是數組類型的一部分。 一旦定義,長度不能變。 [5]int 和 [10]int 是不同的類型。
1) 數組的地址可以通過數組名來獲取 &intArr
2) 數組的第一個元素的地址,就是數組的首地址
3) 數組的各個元素的地址間隔是依據數組的類型決定,比如 int64 -> 8int32->4...

初始化數組
法 1 :
初始化數組時可以使用初始化列表來設置數組元素的值。
func main() {
var testArray [3]int //數組會初始化為int類型的零值
var numArray = [3]int{1,2} //使用指定的初始值完成初始化
var cityArray = [3]string{"Beijing", "Shanghai", "Guangzhou"}
fmt.Println(testArray) //[0 0 0]
fmt.Println(numArray) //[1 2 0]
fmt.Println(cityArray) //[Beijing Shanghai Guangzhou]
}
方法2:
讓編譯器根據初始值的個數自行推斷數組的長度:
func main() {
var testArray [3]int //數組會初始化為int類型的零值
var numArray = [...]int{1, 2} //使用指定的初始值完成初始化
var cityArray = [...]string{"Beijing", "Shanghai", "Guangzhou"}
fmt.Println(testArray) //[0 0 0]
fmt.Println(numArray) //[1 2]
fmt.Printf("type of numArray:%T\n", numArray) //type of
numArray:[2]int
fmt.Println(cityArray) //[Beijing Shanghai
Guangzhou]
fmt.Printf("type of numArray:%T\n", cityArray) //type of numArray:
[3]string
}
方法3:
使用指定索引值的方式初始化數組:
func main() {
a := [...]int{1: 1, 3: 5} //第一個1是下標,第二個1 是值, 3是下
標,5是值
fmt.Println(a) // [0 1 0 5]
fmt.Printf("type of a:%T\n", a) //type of a:[4]int
}
數組賦值
o 語言的數組的賦值,即給定義好的數組指定的索引的位置設置對應的 值。
Go 語言數組賦值語法:
arr[index] = value
給定義好的數組的指定索引位置處賦值
package main
import (
"fmt"
)
func main() {
//給定義好的數組的指定索引位置處賦值
var arrHaiCoder [3]string //定義數組,沒有初始化,默認是""
arrHaiCoder[0] = "Hello" //給數組元素賦值
arrHaiCoder[1] = "中華網"
arrHaiCoder[2] = "China"
fmt.Println("arrHaiCoder0 =", arrHaiCoder[0]) //數組元素的輸出
fmt.Println("arrHaiCoder1 =", arrHaiCoder[1])
fmt.Println("arrHaiCoder2 =", arrHaiCoder[2])
}
數組重新賦值
數組指定索引的位置有值后,也可以通過索引重新設置值
package main
import (
"fmt"
)
func main() {
//數組指定索引的位置有值后,也可以通過索引重新設置值
var arrHaiCoder = [3]string{"Hello", "中華網", "China"} //初始化列
表初始化數組
arrHaiCoder[2] = "Openlab" //指定修改第三個元素
4/6
5/6
fmt.Println("arrHaiCoder0 =", arrHaiCoder[0])
fmt.Println("arrHaiCoder1 =", arrHaiCoder[1])
fmt.Println("arrHaiCoder2 =", arrHaiCoder[2])
}
注意:數組的長度必須是常量,并且長度是數組類型的一部分。一旦定義,長度不能變。 [5]int和[10]int是不同的類型。
var a [3] int
var b [4] int
a = b //不能這樣做,因為a和b是不同類型