Go 陣列
Go 陣列
陣列用於在單個變數中儲存相同型別的多個值,而不是為每個值宣告單獨的變數。
宣告陣列
在 Go 中,有兩種宣告陣列的方式
1. 使用 var
關鍵字
語法
var array_name = [length]datatype{values} // 此處長度已定義
或
var array_name = [...]datatype{values} // 此處長度由編譯器推斷
2. 使用 :=
符號
語法
array_name := [length]datatype{values} // 此處長度已定義
或
array_name := [...]datatype{values} // 此處長度由編譯器推斷
注意:長度 指定要儲存在陣列中的元素數量。在 Go 中,陣列具有固定長度。陣列的長度可以透過數字定義,也可以由編譯器推斷(這意味著編譯器根據 values 的數量來決定陣列的長度)。
陣列示例
示例
此示例聲明瞭兩個具有已定義長度的陣列(arr1 和 arr2)
package main
import ("fmt")
func main() {
var arr1 = [3]int{1,2,3}
arr2 := [5]int{4,5,6,7,8}
fmt.Println(arr1)
fmt.Println(arr2)
}
結果
[1 2 3]
[4 5 6 7 8]
示例
此示例聲明瞭兩個具有推斷長度的陣列(arr1 和 arr2)
package main
import ("fmt")
func main() {
var arr1 = [...]int{1,2,3}
arr2 := [...]int{4,5,6,7,8}
fmt.Println(arr1)
fmt.Println(arr2)
}
結果
[1 2 3]
[4 5 6 7 8]
示例
此示例聲明瞭一個字串陣列
package main
import ("fmt")
func main() {
var cars = [4]string{"Volvo", "BMW", "Ford", "Mazda"}
fmt.Print(cars)
}
結果
[Volvo BMW Ford Mazda]
訪問陣列元素
您可以根據索引號訪問特定的陣列元素。
在 Go 中,陣列索引從 0 開始。這意味著 [0] 是第一個元素,[1] 是第二個元素,以此類推。
示例
此示例演示如何訪問價格陣列中的第一個和第三個元素
package main
import ("fmt")
func main() {
prices := [3]int{10,20,30}
fmt.Println(prices[0])
fmt.Println(prices[2])
}
結果
10
30
更改陣列元素
您還可以透過引用索引號來更改特定陣列元素的值。
示例
此示例演示如何更改價格陣列中第三個元素的值:
package main
import ("fmt")
func main() {
prices := [3]int{10,20,30}
prices[2] = 50
fmt.Println(prices)
}
結果
[10 20 50]
陣列初始化
如果陣列或其某個元素在程式碼中未初始化,則會為其分配其型別的預設值。
提示: int 的預設值為 0,string 的預設值為 ""。
示例
package main
import ("fmt")
func main() {
arr1 := [5]int{} //未初始化
arr2 := [5]int{1,2} //部分初始化
arr3 := [5]int{1,2,3,4,5} //完全初始化
fmt.Println(arr1)
fmt.Println(arr2)
fmt.Println(arr3)
}
結果
[0 0 0 0 0]
[1 2 0 0 0]
[1 2 3 4 5]
僅初始化特定元素
可以僅初始化陣列中的特定元素。
示例
此示例僅初始化陣列中的第二個和第三個元素:
package main
import ("fmt")
func main() {
arr1 := [5]int{1:10,2:40}
fmt.Println(arr1)
}
結果
[0 10 40 0 0]
示例解釋
上面的陣列有 5 個元素。
1:10
表示:將10
賦值給陣列索引1
(第二個元素)。2:40
表示:將40
賦值給陣列索引2
(第三個元素)。
查詢陣列的長度
len()
函式用於查詢陣列的長度
示例
package main
import ("fmt")
func main() {
arr1 := [4]string{"Volvo", "BMW", "Ford", "Mazda"}
arr2 := [...]int{1,2,3,4,5,6}
fmt.Println(len(arr1))
fmt.Println(len(arr2))
}
結果
4
6