[GO]数组的使用-3

  1. 数组的定义与初始化
  2. 声明数组时同时指定特定的元素
  3. 数组的赋值
  4. 数组的遍历
  5. 多维数组
  6. 二维数组的赋值

数组是一个长度确定的数据类型,可以理解为一排排格子放置着物品,可以是不同类型的物品。本节讲解数组的基本使用(因为数组长度不可变的关系,Golang中提供了“动态数组”–切片。使用更广,将在以后说明)

 

数组的定义与初始化

一但声明,该数组的类型与长度不能改变了,当没手动赋初值的时候,会自动将每个元素的值初始化为0。结果在注释中!
package main

import (
“fmt”
)

func main() {
var arr [5]int
fmt.Println(arr)

//{0 0 0 0 0}
}


 

下面是几种不同的定义形式

package main

import (
    "fmt"
)

func main() {
    var arr = [5]int{1, 2, 3, 4, 5}
    var arr2 [5]int = [5]int{1, 2, 3, 4, 5}
    arr3 := [5]int{1, 2, 3, 4, 5}
    arr4 := [...]int{1, 2, 3, 4, 5}

    fmt.Println("arr: ", arr)
    fmt.Println("arr2: ", arr2)
    fmt.Println("arr3: ", arr3)
    fmt.Println("arr4: ", arr4)
/*
arr:  [1 2 3 4 5]
arr2:  [1 2 3 4 5]
arr3:  [1 2 3 4 5]
arr4:  [1 2 3 4 5]
*/
}

 

声明数组时同时指定特定的元素

数组下标都是从0开始的。
package main

import (
“fmt”
)

func main() {
arr := [5]int{1: 22, 4: 99}
fmt.Println(arr)

//[0 22 0 0 99]
}


 

数组的赋值

按照对应的下标,即可修改数组元素的值。
package main

import (
“fmt”
)

func main() {
arr := [5]int{1, 2, 3, 4, 5}
arr[0] = 66
arr[3] = 99
fmt.Println(arr)

//[66 2 3 99 5]
}


 

同时可以将同类型同长度的数组赋值给另一个数组

我们这里能看出来,对arr的修改并不影响arr2,golang中传递方式为值传递,相当于copy了一份。

package main

import (
    "fmt"
)

func main() {
    arr := [5]string{"hehe", "haha", "xixi", "huhu", "pupu"}
    var arr2 [5]string
    arr2 = arr
    arr[0] = "pipi"
    fmt.Println(arr)
    fmt.Println(arr2)

/*
[pipi haha xixi huhu pupu]
[hehe haha xixi huhu pupu]
*/
}

 

数组的遍历

我们平时通过下标遍历的方式。
package main

import (
“fmt”
)

func main() {
arr := [5]string{“hehe”, “haha”, “xixi”, “huhu”, “pupu”}

for i := 0; i < len(arr); i++ {
    fmt.Println(arr[i])
}

/*
hehe
haha
xixi
huhu
pupu
*/
}


 

这里还可以使用range关键字来遍历,这种方式可以将下标与对应的值全取出来,下面是取值的几种用法。

package main

import (
    "fmt"
)

func main() {
    arr := [...]string{"hehe", "haha", "xixi"}
    //取下标
    for a := range arr {
        fmt.Print(a)
    }
    fmt.Println()

    //取下标和值
    fmt.Println()
    for a := range arr {
        fmt.Println(a, arr[a])
    }

    //取下标和值
    fmt.Println()
    for a, v := range arr {
        fmt.Println(a, v)
    }

    //取值
    fmt.Println()
    for _, v := range arr {
        fmt.Println(v)
    }

/*
012

0 hehe
1 haha
2 xixi

0 hehe
1 haha
2 xixi

hehe
haha
xixi
*/
}

 


多维数组

多维的定义与初始化。他们之间许多能理解为父子的对应关系。
package main

import (
“fmt”
)

func main() {
var arr [3][2]int
fmt.Println(arr)

arr2 := [2][2]int{{3, 4}, {6, 9}}
fmt.Println(arr2)

arr3 := [3][2]int{1: {3, 6}, 2: {9, 11}}
fmt.Println(arr3)

arr4 := [3][2]int{1: {0: 33}, 2: {1: 55}}
fmt.Println(arr4)

/*
[[0 0] [0 0] [0 0]]
[[3 4] [6 9]]
[[0 0] [3 6] [9 11]]
[[0 0] [33 0] [0 55]]
*/
}


 

二维数组的赋值

package main

import (
“fmt”
)

func main() {
var arr [2][3]int

arr[0][0] = 1
arr[0][1] = 3
arr[1][1] = 9
fmt.Println(arr)

/*
[[1 3 0] [0 9 0]]
*/
}


 


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xiaoxin1218@qq.com

文章标题:[GO]数组的使用-3

文章字数:766

本文作者:周信

发布时间:2019-10-08, 22:41:46

最后更新:2023-05-03, 10:25:35

原始链接:http://zx21.xyz/2019/10/08/GO-数组的使用-3/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

可为我打赏鼓励~