Go語言基礎學習之數組的使用詳解
數組相必大家都很熟悉,各大語言也都有數組的身影。Go 語言也提供了數組類型的數據結構。
1. Array(數組)
數組是同一種數據類型的固定長度的元素集合。在 Go 語言中,數組聲明后長度就不能改變了,可以修改數組的元素,用法:
// eg: 定義一個長度為 10 的 int 數組 var a [10]int
2. 聲明數組
Go 語言數組申明時需要指定元素類型及元素的個數,語法格式如下:
var variable_name [SIZE] variable_type
3. 數組初始化
Go 語言中初始化數組有很多方式。
3.1 方式一
我們也可以通過字面量在聲明數組的同時快速初始化數組:
balance := [5]float32{3.14, 13.0, 33.4, 15.0, 20.0}3.2 方式二
如果數組長度不確定,可以使用 ...代替數組的長度,編譯器會根據元素個數自行推斷數組的長度:
balance := [...]float32{3.14, 13.0, 33.4, 15.0, 20.0}3.3 方式三
如果設置了數組的長度,我們還可以通過指定下標來初始化元素:
// 將索引下標為 1 和 3 的元素初始化
balance := [5]float32{1:2.0,3:7.0}3.4 多維數組
package main
import (
"fmt"
)
var array1 [5][3]int
var array2 [2][3]int = [...][3]int{{10, 20, 30}, {4, 5, 6}}
func main() {
arr1 := [2][3]int{{10, 11, 12}, {20, 21, 22}}
arr2 := [...][2]int{{10, 11}, {20, 21}, {30, 31}}
fmt.Println(array1, array2)
fmt.Println(arr1, arr2)
}注意: Go 語言多維數組中,只有第一層可以用 ...其他維度不能用 ...
4. 遍歷數組&取值
Go 語言中,遍歷數組有以下兩種方法:
func main() {
var users = [...]string{"張三", "李四", "王五"}
// 方法1:for range遍歷
for index, item := range users {
fmt.Println(index, item)
}
// 方法2:for循環(huán)遍歷
for i := 0; i < len(users); i++ {
fmt.Println("姓名:", users[i])
}
}多維數組遍歷
func main() {
var f [2][3]int = [...][3]int{{10, 20, 30}, {4, 5, 6}}
for k1, v1 := range f {
for k2, v2 := range v1 {
fmt.Printf("(%d,%d)=%d ", k1, k2, v2)
}
fmt.Println("-------------")
}
}注意: Go 語言中訪問越界,如果下標在數組合法范圍之外,則觸發(fā)訪問越界,會出現 panic
5. 數組拷貝和傳參
Go 語言中數組是值類型,賦值和傳參會復制整個數組。只會改變復制出來臨時數組的值,不會改變本身。
package main
import "fmt"
func printArr1(arr *[5]int) {
// 數組指針
arr[0] = 1000
}
func printArr2(arr [5]int) {
arr[0] = 1000
}
func main() {
arr1 := [5]int{100, 200, 300, 400, 500}
printArr1(&arr1)
fmt.Println(arr1)
arr2 := [...]int{2, 4, 6, 8, 10}
printArr2(arr2)
fmt.Println(arr2)
}控制臺輸出結果:
[1000 200 300 400 500]
[2 4 6 8 10]
注意:
- 數組支持 “==“、”!=” 操作符,因為其內存總是被初始化過的。
- [n]T 表示指針數組,[n]T 表示數組指針 。
到此這篇關于Go語言基礎學習之數組的使用詳解的文章就介紹到這了,更多相關Go語言數組內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Go錯誤處理之panic函數和recover函數使用及捕獲異常方法
這篇文章主要介紹了Go錯誤處理之panic函數使用及捕獲,本篇探討了如何使用 panic 和 recover 來處理 Go 語言中的異常,需要的朋友可以參考下2023-03-03

