Go編程語言中的數(shù)組與其他編程語言非常相似。在程序中,有時我們需要存儲一組相同類型的數(shù)據(jù),例如學(xué)生分數(shù)列表。這種類型的集合使用數(shù)組存儲在程序中。數(shù)組是固定長度的序列,用于將同類元素存儲在內(nèi)存中。由于它們的固定長度數(shù)組不像Go語言中的Slice(切片)這樣受歡迎。
在數(shù)組中,允許在其中存儲零個或零個以上的元素。通過使用[]索引運算符及其從零開始的位置對數(shù)組的元素進行索引,這意味著第一個元素的索引為array [0],最后一個元素的索引為array [len(array)-1]。

在Go語言中,數(shù)組是通過兩種不同的方式創(chuàng)建的:
使用var關(guān)鍵字:在Go語言中,使用具有名稱,大小和元素的特定類型的var關(guān)鍵字創(chuàng)建數(shù)組。
語法:
Var array_name[length]Type
或
var array_name[length]Typle{item1, item2, item3, ...itemN}重要事項:
在Go語言中,數(shù)組是可變的,因此您可以在分配的左側(cè)使用array [index]語法在給定索引處設(shè)置數(shù)組的元素。
Var array_name[index] = element[object Object]
您可以使用索引值或使用for循環(huán)來訪問數(shù)組的元素。
在Go語言中,數(shù)組類型是一維的。
數(shù)組的長度是固定的,不能更改。
您可以將重復(fù)的元素存儲在數(shù)組中。
//使用var關(guān)鍵字創(chuàng)建一個數(shù)組
//使用其索引值訪問數(shù)組
package main
import "fmt"
func main() {
//使用var關(guān)鍵字,創(chuàng)建一個字符串類型的數(shù)組
var myarr [3]string
//使用索引分配元素
myarr[0] = "GFG"
myarr[1] = "www.jixiangtaizi.com.cn"
myarr[2] = "nhooo"
//訪問數(shù)組的元素
//使用索引值
fmt.Println("數(shù)組的元素:")
fmt.Println("元素 1: ", myarr[0])
fmt.Println("元素 2: ", myarr[1])
fmt.Println("元素 3: ", myarr[2])
}輸出:
數(shù)組的元素: 元素 1: GFG 元素 2: www.jixiangtaizi.com.cn 元素 3: nhooo
使用簡寫聲明:在Go語言中,數(shù)組也可以使用簡寫聲明進行聲明。它比上面的聲明更靈活。
語法:
array_name:= [length]Type{item1, item2, item3,...itemN}[object Object]//使用簡寫聲明的數(shù)組
//使用for循環(huán)訪問數(shù)組
package main
import "fmt"
func main() {
//數(shù)組的簡寫聲明
arr := [4]string{"nhooo", "gfg", "nhooos1231", "www.jixiangtaizi.com.cn"}
//訪問的元素,使用for循環(huán)的數(shù)組
fmt.Println("數(shù)組的元素:")
for i := 0; i < 3; i++ {
fmt.Println(arr[i])
}
}輸出:
數(shù)組的元素: nhooo gfg nhooos1231
我們已經(jīng)知道數(shù)組是一維的,但是允許創(chuàng)建多維數(shù)組。多維數(shù)組是相同類型數(shù)組的數(shù)組。在Go語言中,您可以使用以下語法創(chuàng)建多維數(shù)組:
Array_name[Length1][Length2]..[LengthN]Type
您可以使用Var關(guān)鍵字或使用簡寫聲明來創(chuàng)建多維數(shù)組,如下例所示。
注意:在多維數(shù)組中,如果用戶未使用某個值初始化單元格,則編譯器將自動將其初始化為零。Golang中沒有未初始化的概念。
package main
import "fmt"
func main() {
//創(chuàng)建和初始化
//二維數(shù)組
//使用簡寫聲明
//這里需要用(,)逗號
arr := [3][3]string{{"C#", "C", "Python"},
{"Java", "Scala", "Perl"},
{"C++", "Go", "HTML"}}
//訪問的值
//數(shù)組使用for循環(huán)
fmt.Println("數(shù)組的元素 1")
for x := 0; x < 3; x++ {
for y := 0; y < 3; y++ {
fmt.Println(arr[x][y])
}
}
//創(chuàng)建二維數(shù)組
//使用var關(guān)鍵字的數(shù)組
//并初始化一個
//使用索引的維數(shù)組
var arr1 [2][2]int
arr1[0][0] = 100
arr1[0][1] = 200
arr1[1][0] = 300
arr1[1][1] = 400
//訪問數(shù)組的值
fmt.Println("數(shù)組的元素 2")
for p := 0; p < 2; p++ {
for q := 0; q < 2; q++ {
fmt.Println(arr1[p][q])
}
}
}輸出:
數(shù)組的元素 1 C# C Python Java Scala Perl C++ Go HTML 數(shù)組的元素 2 100 200 300 400
在數(shù)組中,如果未顯式初始化數(shù)組,則此數(shù)組的默認值為0。
package main
import "fmt"
func main() {
//創(chuàng)建一個int類型的數(shù)組,存儲兩個元素
//在這里,我們不初始化數(shù)組,所以數(shù)組的值為零
var myarr[2]int
fmt.Println("數(shù)組元素 :", myarr)
}輸出:
數(shù)組元素 : [0 0]
在數(shù)組中,您可以使用len()方法獲取數(shù)組的長度,如下所示:
package main
import "fmt"
func main() {
//創(chuàng)建數(shù)組
//使用簡寫聲明
arr1 := [3]int{9, 7, 6}
arr2 := [...]int{9, 7, 6, 4, 5, 3, 2, 4}
arr3 := [3]int{9, 3, 5}
// 使用len方法計算數(shù)組大小
fmt.Println("數(shù)組1的長度是:", len(arr1))
fmt.Println("數(shù)組2的長度是:", len(arr2))
fmt.Println("數(shù)組3的長度是:", len(arr3))
}輸出:
數(shù)組1的長度是: 3 數(shù)組2的長度是: 8 數(shù)組3的長度是: 3
在數(shù)組中,如果省略號“ ...”在長度位置處可見,則數(shù)組的長度由初始化的元素確定。如下例所示:
//數(shù)組中省略號的使用方法
package main
import "fmt"
func main() {
//創(chuàng)建大小已確定的數(shù)組
//根據(jù)其中元素的數(shù)量
//使用省略號
myarray := [...]string{"GFG", "gfg", "nhooos", "www.jixiangtaizi.com.cn", "nhooo"}
fmt.Println("數(shù)組元素: ", myarray)
//數(shù)組的長度
//由...決定
//使用len()方法
fmt.Println("數(shù)組的長度為:", len(myarray))
}輸出:
數(shù)組元素: [GFG gfg nhooos www.jixiangtaizi.com.cn nhooo] 數(shù)組的長度為: 5
在數(shù)組中,允許您在array 的元素范圍內(nèi)進行迭代。如下例所示:
//如何迭代數(shù)組
package main
import "fmt"
func main() {
//創(chuàng)建一個數(shù)組,其大小
//用省略號表示
myarray := [...]int{29, 79, 49, 39, 20, 49, 48, 49}
//使用for循環(huán)迭代數(shù)組
for x := 0; x < len(myarray); x++ {
fmt.Printf("%d\n", myarray[x])
}
}輸出:
29 79 49 39 20 49 48 49
在Go語言中,數(shù)組的值類型不是引用類型。因此,當(dāng)將數(shù)組分配給新變量時,在新變量中所做的更改不會影響原始數(shù)組。如下例所示:
package main
import "fmt"
func main() {
//創(chuàng)建一個數(shù)組,其大小
//用省略號表示
my_array := [...]int{100, 200, 300, 400, 500}
fmt.Println("原始數(shù)組(改變前):", my_array)
//創(chuàng)建一個新變量
//并使用my_array進行初始化
new_array := my_array
fmt.Println("新數(shù)組(改變前):", new_array)
//將索引0處的值更改為500
new_array[0] = 500
fmt.Println("新數(shù)組(改變后):", new_array)
fmt.Println("原始數(shù)組(改變后):", my_array)
}輸出:
原始數(shù)組(改變前): [100 200 300 400 500] 新數(shù)組(改變前): [100 200 300 400 500] 新數(shù)組(改變后): [500 200 300 400 500] 原始數(shù)組(改變后): [100 200 300 400 500]
在數(shù)組中,如果數(shù)組的元素類型是可比較的,則數(shù)組類型也是可比較的。因此,我們可以使用==運算符直接比較兩個數(shù)組。如下例所示:
//如何比較兩個數(shù)組
package main
import "fmt"
func main() {
arr1 := [3]int{9, 7, 6}
arr2 := [...]int{9, 7, 6}
arr3 := [3]int{9, 5, 3}
//使用==運算符比較數(shù)組
fmt.Println(arr1 == arr2)
fmt.Println(arr2 == arr3)
fmt.Println(arr1 == arr3)
//這將給出和錯誤,因為
// arr1和arr4的類型不匹配
/*
arr4:= [4]int{9,7,6}
fmt.Println(arr1==arr4)
*/
}輸出:
true false false