3.2.3.3Golang的數(shù)據(jù)類型--數(shù)組

總目錄:http://www.itdecent.cn/p/e406a9bc93a9

Golang - 子目錄:http://www.itdecent.cn/p/8b3e5b2b4497

數(shù)組

數(shù)組是同一種數(shù)據(jù)類型元素的集合。 在Go語言中,數(shù)組從聲明時就確定,使用時可以修改數(shù)組成員,但是數(shù)組大小不可變化。

定義數(shù)組

語法
var 變量名 [長度]數(shù)組元素類型

例子:

package main

import "fmt"

func main() {
    //數(shù)組
    //存放元素的容器
    //必須指定存放的類型與容量

    var arr1 [3]int
    var arr2 [4]int
}

注意事項:
數(shù)組的類型與其長度相關(guān)聯(lián)。

package main

import "fmt"

func main() {
    var arr1 [3]int
    var arr2 [4]int
    fmt.Printf("arr1:%T arr2:%T\n", arr1, arr2)
}
----------
arr1:[3]int arr2:[4]int

數(shù)組的初始化

數(shù)組的初始化有三種方式,第一種是在定義時直接指定,第二種是讓編譯器自動識別長度,第三種是指定索引初始化。

package main

import "fmt"

func main() {
    var arr1 [3]int
    var arr2 [4]int

    // 數(shù)組初始化
    // 如果不初始化,默認元素是0(布爾值是false,數(shù)值型是0,字符串是“)
    fmt.Println(arr1, arr2)

    // 初始化一
    arr1 = [3]int{1,3}
    fmt.Println(arr1)

    // 初始化二 根據(jù)初始值自動推斷數(shù)組長度是多少
    arr100 := [...]int{1, 2, 31, 4, 234, 34, 532, 45}
    fmt.Println(arr100)

    // 初始化三 根據(jù)索引初始化
    arr4 := [5]int{0: 1, 4: 2}
    fmt.Println(arr4)

}
----------
[0 0 0] [0 0 0 0]
[1 3 0]
[1 2 31 4 234 34 532 45]
[1 0 0 0 2]

遍歷數(shù)組

遍歷數(shù)組就要使用for循環(huán)了,但是因為遍歷的是復(fù)合數(shù)據(jù)類型,所以就有了兩種遍歷方式。

package main

import "fmt"

func main() {
    // 數(shù)組的遍歷
    citys := [...]string{"北京", "上海", "深圳"}
    // 1.根據(jù)索引遍歷
    for i := 0; i < len(citys); i++ {
        fmt.Println(citys[i])
    }

    // 2.for range遍歷
    for i, v := range citys {
        fmt.Println(i, v)
    }
}
----------
北京
上海
深圳
0 北京
1 上海
2 深圳

多維數(shù)組

Go語言是支持多維數(shù)組的,我們這里以二維數(shù)組為例.

多維數(shù)組的定義

package main

import "fmt"

func main() {
    //多維數(shù)組
    var arrs = [3][3]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
    fmt.Println(arrs)
}
----------
[[1 2 3] [4 5 6] [7 8 9]]

多維數(shù)組的遍歷

package main

import "fmt"

func main() {
    //多維數(shù)組
    var arrs = [3][3]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
    fmt.Println(arrs)

    //多維數(shù)組的遍歷
    for _, v1 := range arrs {
        for _, v2 := range v1 {
            fmt.Println(v2)
        }
    }
}
----------
[[1 2 3] [4 5 6] [7 8 9]]
1
2
3
4
5
6
7
8
9

數(shù)組是值類型

就是說引用了數(shù)組之后,拷貝數(shù)組與原數(shù)組之間沒有關(guān)系了。

package main

import "fmt"

func main() {
    //數(shù)組是值類型
    //這句話翻譯成Python語言就是  數(shù)組是 不可變數(shù)據(jù)類型
    arr5 := [3]int{1,2,3}
    arr6 := arr5
    arr6[0] = 10
    fmt.Println("arr5:",arr5)
    fmt.Println("arr6:",arr6)
}
----------
arr5: [1 2 3]
arr6: [10 2 3]

練習(xí)題

package main

import "fmt"

func main() {
    //數(shù)組練習(xí)題
    //1.求數(shù)組[1,3,5,7,8]所有元素的和
    //2.找出數(shù)組中和為指定值的兩個元素的下標(biāo)
    //例如:和為8的兩個元素下標(biāo)分別為(0,3)和(1,2)

     arrays := [...]int{1,3,5,7,8}

     //1
     sum := 0
     for _,v := range arrays{
         sum = sum + v
     }
     fmt.Println(sum)

     //2
     for i := 0;i<len(arrays);i++{
         for j:=i+1;j<len(arrays);j++{
             if arrays[i] + arrays[j] == 8{
                 fmt.Printf("(%d,%d)\n",arrays[i],arrays[j])
             }
         }
     }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容