Go 語言中的數(shù)組
數(shù)組是一個(gè)可以存放相同數(shù)據(jù)類型數(shù)據(jù)的定長(zhǎng)序列。由于數(shù)組是定長(zhǎng)的,在使用場(chǎng)景并不豐富,所以在 Go 語言中通常使用的是切片(Slice)。想要使用切片,就先要了解數(shù)組,所以在本文先介紹 Go 語言中數(shù)組的使用。
1. 數(shù)組的聲明
數(shù)組的聲明形式形如var 數(shù)組名 [數(shù)組長(zhǎng)度]數(shù)組類型
,其中數(shù)組類型可以是數(shù)組本身,也就是數(shù)組類型的數(shù)組,這樣就構(gòu)成了多維數(shù)組。和變量的聲明相同,數(shù)組在聲明時(shí)會(huì)初始化變量類型的零值。
代碼示例
代碼塊
- 1?
package main
- 2
- 3?
import (
- 4? ? ? ?
"fmt"
- 5?
)
- 6
- 7?
func main() {
- 8? ? ? ? ?
var a [2]int
- 9? ? ? ? ?
var b [2][2]int
- 10? ? ? ?
var c = [2]int{1, 2}
- 11? ? ? ?
var d = [...]int{3, 4}
- 12? ?? ??
fmt.Println("a的零值", a)
- 13? ?? ??
fmt.Println("b的零值", b)
- 14? ? ? ?
fmt.Println("c的值", c)
- 15? ? ? ?
fmt.Println("d的值", d)
- 16?
}
- 第 8 行:聲明一個(gè)長(zhǎng)度為2的一維數(shù)組。自動(dòng)初始化為零值;
- 第 9 行:聲明一個(gè)2行2列的二維數(shù)組。自動(dòng)初始化為零值;
- 第 10 行:聲明并定義一個(gè)長(zhǎng)度為2,值為[1,2]的數(shù)組;
- 第 11 行:使用?
...
?表示根據(jù)數(shù)組后值的長(zhǎng)度自動(dòng)初始化長(zhǎng)度。因?yàn)楹竺娴闹凳?[3,4] 數(shù)組自動(dòng)初始化長(zhǎng)度為 2。
執(zhí)行結(jié)果:

2. 數(shù)組的比較
在 Go 語言中判斷數(shù)組是否相等需要比較兩個(gè)部分。一個(gè)是數(shù)組的長(zhǎng)度是否相等,另一個(gè)是數(shù)組中存放的值是否順序和大小完全相同。只要這兩個(gè)部分相等,則 Go 語言中的兩個(gè)數(shù)組就是相等的。
Tips:Go 語言中只有類型相同的數(shù)組才可以互相比較,且數(shù)組沒有大小的比較,只能比較是否相等。
代碼示例:
代碼塊
- 1 ?
package main
- 2
- 3?
import (
- 4? ? ? ? ? ?
"fmt"
- 5 ?
)
- 6
- 7?
func main(){
- 8? ?? ?? ??
var a [2]int
- 9? ? ? ? ??
var c = [2]int{1, 2}
- 10? ? ?? ??
var d = [...]int{1, 2}
- 11? ? ?? ??
fmt.Println("a == c ? ", a == c)
- 12? ? ?? ?
fmt.Println("c == d ?", c == d)
- 13?
}
- 第 11 行:比較數(shù)組 a 和數(shù)組 b 是否相等。兩個(gè)數(shù)組長(zhǎng)度相同,是存儲(chǔ)的值不同,所以不相等;
- 第 12 行:比較數(shù)組 c 和數(shù)組 d 是否相等。兩個(gè)數(shù)組長(zhǎng)度相同,且存儲(chǔ)的值也相通,所以相等。
執(zhí)行結(jié)果:

3. 小結(jié)
本文主要介紹了Go語言中數(shù)組的使用,主要講解了以下幾點(diǎn):
- 數(shù)組聲明時(shí)就決定了長(zhǎng)度,會(huì)自動(dòng)初始化零值;
- 數(shù)組可以使用
...
來自動(dòng)初始化數(shù)組的長(zhǎng)度; - 數(shù)組比較是否相等時(shí)必須是數(shù)組長(zhǎng)度和值完全相同才會(huì)相等。
文章來源于網(wǎng)絡(luò),侵刪!