GoLang學習之Golang數組


Go語言數組

數組是Go語言編程中最常用的數據結構之一。顧名思義,數組就是指一系列同一類型數據的集合。數組中包含的每個數據被稱為數組元素( element),一個數組包含的元素個數被稱為數組的長度。需要強調的一點是Go語言中數組的長度固定,無法擴容。

聲明定義

數組在定義初始化的時候,長度可以指定,也可以不指定讓編譯器自動推斷。幾種常見的數組定義初始化的方式如下:

var a [3]int   //3個int型的數組,初始值是3個0,數組“零值”狀態
arr:=[5]int{1,2,3,4,5}   //定義並初始化長度為5的數組
var array2 = [...]int{6, 7, 8} //不聲明長度
q := [...] int {1,2,3} //不聲明長度
r := [...] int {99:-1}  //長度為100的數組,只有最后一個是-1,其他都是0

在聲明var arr1 [5]int中每個元素是一個整形值,當聲明數組時所有的元素都會被自動初始化為默認值 0。

數組元素訪問

Go語言中,可以使用數組下標來訪問數組中的元素。數組下標從0開始,len(arr)-1則表示最后一個元素的下標。

只有有效的索引可以被使用,當使用等於或者大於 len(arr)的索引時:如果編譯器可以檢測到,會給出索引超限的提示信息;如果檢測不到的話編譯會通過而運行時會 panic。

比起C語言,Go語言可以直接調用打印函數打印出整個數組。下面我們定義一個二維數組,然后來打印出數組長度和整個數組:

package main

import "fmt"

func main() {
    myArray := [3][4]int{{1,2,3,4},{1,2,3,4},{1,2,3,4}}

    //打印一維數組長度
    fmt.Println(len(myArray))
    //打印二維數組長度
    fmt.Println(len(myArray[1]))
    //打印整個二維數組
    fmt.Println(myArray)
}

for-range結構

這是Go語言一種獨有的結構,可以用來遍歷訪問數組的元素。

for ix, value := range array01 {
    ...
}

第一個返回值 ix 是數組的索引,第二個是在該索引位置的值;他們都是僅在 for 循環內部可見的局部變量。value 只是 array01 某個索引位置的值的一個拷貝,不能用來修改 array01 該索引位置的值。例如:

package main
import "fmt"

func main() {
    var arr1 [5]int

    for i:=0; i < len(arr1); i++ {
        arr1[i] = i * 2
    }

    for i:=0; i < len(arr1); i++ {
        fmt.Printf("Array at index %d is %d\n", i, arr1[i])
    }

當然,如果你在遍歷數組元素的時候,如果想遺棄索引id,可以直接把索引id標為下划線_。一個求數組里面的平均值的例子如下:

package main
import (
    "fmt"
)
func main() {
    sum := 0.0
    var avg float64
    xs := [6]float64{1, 2, 3, 4, 5, 6}
    switch len(xs) {
    case 0:
        avg = 0
    default:
        for _, v := range xs {//下划線表示那個值舍去,即舍去下標索引
            sum += v
        }
        avg = sum / float64(len(xs))
    }
    fmt.Println(avg)
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM