日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Go語言基礎(chǔ)學(xué)習(xí)之?dāng)?shù)組的使用詳解_Golang

作者:程序員祝融 ? 更新時間: 2023-02-06 編程語言

數(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ù)組指針 。

原文鏈接:https://segmentfault.com/a/1190000043201189

欄目分類
最近更新