Go語言基礎(chǔ)學(xué)習(xí)之?dāng)?shù)組的使用詳解
數(shù)組相必大家都很熟悉,各大語言也都有數(shù)組的身影。Go 語言也提供了數(shù)組類型的數(shù)據(jù)結(jié)構(gòu)。
1. Array(數(shù)組)
數(shù)組是同一種數(shù)據(jù)類型的固定長度的元素集合。在 Go 語言中,數(shù)組聲明后長度就不能改變了,可以修改數(shù)組的元素,用法:
// eg: 定義一個長度為 10 的 int 數(shù)組 var a [10]int
2. 聲明數(shù)組
Go 語言數(shù)組申明時需要指定元素類型及元素的個數(shù),語法格式如下:
var variable_name [SIZE] variable_type
3. 數(shù)組初始化
Go 語言中初始化數(shù)組有很多方式。
3.1 方式一
我們也可以通過字面量在聲明數(shù)組的同時快速初始化數(shù)組:
balance := [5]float32{3.14, 13.0, 33.4, 15.0, 20.0}
3.2 方式二
如果數(shù)組長度不確定,可以使用 ...
代替數(shù)組的長度,編譯器會根據(jù)元素個數(shù)自行推斷數(shù)組的長度:
balance := [...]float32{3.14, 13.0, 33.4, 15.0, 20.0}
3.3 方式三
如果設(shè)置了數(shù)組的長度,我們還可以通過指定下標(biāo)來初始化元素:
// 將索引下標(biāo)為 1 和 3 的元素初始化 balance := [5]float32{1:2.0,3:7.0}
3.4 多維數(shù)組
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 語言多維數(shù)組中,只有第一層可以用 ...
其他維度不能用 ...
4. 遍歷數(shù)組&取值
Go 語言中,遍歷數(shù)組有以下兩種方法:
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]) } }
多維數(shù)組遍歷
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 語言中訪問越界,如果下標(biāo)在數(shù)組合法范圍之外,則觸發(fā)訪問越界,會出現(xiàn) panic
5. 數(shù)組拷貝和傳參
Go 語言中數(shù)組是值類型,賦值和傳參會復(fù)制整個數(shù)組。只會改變復(fù)制出來臨時數(shù)組的值,不會改變本身。
package main import "fmt" func printArr1(arr *[5]int) { // 數(shù)組指針 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) }
控制臺輸出結(jié)果:
[1000 200 300 400 500]
[2 4 6 8 10]
注意:
- 數(shù)組支持 “==“、”!=” 操作符,因為其內(nèi)存總是被初始化過的。
- [n]T 表示指針數(shù)組,[n]T 表示數(shù)組指針 。
到此這篇關(guān)于Go語言基礎(chǔ)學(xué)習(xí)之?dāng)?shù)組的使用詳解的文章就介紹到這了,更多相關(guān)Go語言數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang channel關(guān)閉的實現(xiàn)示例
channel關(guān)閉不當(dāng)或不關(guān)閉會引發(fā)很多問題,本文主要介紹了Golang channel關(guān)閉的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-01-01golang?chan傳遞數(shù)據(jù)的性能開銷詳解
這篇文章主要為大家詳細(xì)介紹了Golang中chan在接收和發(fā)送數(shù)據(jù)時因為“復(fù)制”而產(chǎn)生的開銷,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-01-01go語言中使用ent做關(guān)聯(lián)查詢的示例詳解
go語言的ent框架是facebook開源的ORM框架,是go語言開發(fā)中的常用框架,而關(guān)聯(lián)查詢又是日常開發(fā)中的常見數(shù)據(jù)庫操作,故文本給出一個使用ent做關(guān)聯(lián)查詢的使用示例,需要的朋友可以參考下2024-02-02Go錯誤處理之panic函數(shù)和recover函數(shù)使用及捕獲異常方法
這篇文章主要介紹了Go錯誤處理之panic函數(shù)使用及捕獲,本篇探討了如何使用 panic 和 recover 來處理 Go 語言中的異常,需要的朋友可以參考下2023-03-03