3.2.3.3Golang的数据类型--数组

总目录:https://blog.csdn.net/qq_41106844/article/details/105553392

Golang - 子目录:https://blog.csdn.net/qq_41106844/article/details/105553366

 

数组

数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。

定义数组

语法
var 变量名 [长度]数组元素类型

例子:

package main

import "fmt"

func main() {
    //数组
    //存放元素的容器
    //必须指定存放的类型与容量

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

注意事项:
数组的类型与其长度相关联。

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

数组的初始化

数组的初始化有三种方式,第一种是在定义时直接指定,第二种是让编译器自动识别长度,第三种是指定索引初始化。

package main

import "fmt"

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

    // 数组初始化
    // 如果不初始化,默认元素是0(布尔值是false,数值型是0,字符串是“)
    fmt.Println(arr1, arr2)

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

    // 初始化二 根据初始值自动推断数组长度是多少
    arr100 := [...]int{1, 2, 31, 4, 234, 34, 532, 45}
    fmt.Println(arr100)

    // 初始化三 根据索引初始化
    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]

遍历数组

遍历数组就要使用for循环了,但是因为遍历的是复合数据类型,所以就有了两种遍历方式。

package main

import "fmt"

func main() {
    // 数组的遍历
    citys := [...]string{"北京", "上海", "深圳"}
    // 1.根据索引遍历
    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 深圳

多维数组

Go语言是支持多维数组的,我们这里以二维数组为例.

多维数组的定义

package main

import "fmt"

func main() {
    //多维数组
    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]]

多维数组的遍历

package main

import "fmt"

func main() {
    //多维数组
    var arrs = [3][3]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
    fmt.Println(arrs)

    //多维数组的遍历
    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

数组是值类型

就是说引用了数组之后,拷贝数组与原数组之间没有关系了。

package main

import "fmt"

func main() {
    //数组是值类型
    //这句话翻译成Python语言就是  数组是 不可变数据类型
    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]

练习题

package main

import "fmt"

func main() {
    //数组练习题
    //1.求数组[1,3,5,7,8]所有元素的和
    //2.找出数组中和为指定值的两个元素的下标
    //例如:和为8的两个元素下标分别为(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])
             }
         }
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值