文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go语言基础学习之数组的使用详解

2022-12-30 12:02

关注

数组相必大家都很熟悉,各大语言也都有数组的身影。Go 语言也提供了数组类型的数据结构。

1. Array(数组)

数组是同一种数据类型的固定长度的元素集合。在 Go 语言中,数组声明后长度就不能改变了,可以修改数组的元素,用法:

// eg: 定义一个长度为 10 的 int 数组
var a [10]int

2. 声明数组

Go 语言数组申明时需要指定元素类型及元素的个数,语法格式如下:

var variable_name [SIZE] variable_type

3. 数组初始化

Go 语言中初始化数组有很多方式。

3.1 方式一

我们也可以通过字面量在声明数组的同时快速初始化数组:

balance := [5]float32{3.14, 13.0, 33.4, 15.0, 20.0}

3.2 方式二

如果数组长度不确定,可以使用 ...代替数组的长度,编译器会根据元素个数自行推断数组的长度:

balance := [...]float32{3.14, 13.0, 33.4, 15.0, 20.0}

3.3 方式三

如果设置了数组的长度,我们还可以通过指定下标来初始化元素:

//  将索引下标为 1 和 3 的元素初始化
balance := [5]float32{1:2.0,3:7.0}

3.4 多维数组

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 语言多维数组中,只有第一层可以用 ...其他维度不能用 ...

4. 遍历数组&取值

Go 语言中,遍历数组有以下两种方法:

func main() {
    var users = [...]string{"张三", "李四", "王五"}

    // 方法1:for range遍历
    for index, item := range users {
        fmt.Println(index, item)
    }
    
    // 方法2:for循环遍历
    for i := 0; i < len(users); i++ {
        fmt.Println("姓名:", users[i])
    }

}

多维数组遍历

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 语言中访问越界,如果下标在数组合法范围之外,则触发访问越界,会出现 panic

5. 数组拷贝和传参

Go 语言中数组是值类型,赋值和传参会复制整个数组。只会改变复制出来临时数组的值,不会改变本身。

package main

import "fmt"

func printArr1(arr *[5]int) {
    // 数组指针
    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)
}

控制台输出结果:

[1000 200 300 400 500]
[2 4 6 8 10]

注意:

到此这篇关于Go语言基础学习之数组的使用详解的文章就介绍到这了,更多相关Go语言数组内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯