• Go语言数组


    数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。

    在Go语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素可以是内建类型,像数字和字符串,也可以是结构类型,元素可以通过唯一的索引值访问,从0开始。

    数组是很有价值的数据结构,因为它的内存分配是连续的,内存连续意味着可以让它在CPU缓存中待更久,所以迭代数组和移动元素都会非常迅速

    数组定义

    第一种,通过指定数据类型和元素个数(数组长度)来声明数组。

    声明一个长度为5的整数数组:

    var array [5]int

    声明一个长度为5的整数数组并初始化:

    var array [5]int = [5]int{1, 2, 3, 4, 5}

    第二种,一种快速创建和初始化数组的方法是使用数组字面值。数组字面值允许我们声明我们需要的元素个数并指定数据类型。

    声明一个长度为5的字符串数组并初始化每个元素:

    array := [5]string{"Linux", "Python", "Java", "Golang", "DBA"}

    第三种,如果你把长度写成…,Go编译器将会根据你的元素来推导出长度。

    通过初始化值的个数来推导出数组容量:

    array := [...]int{1, 2, 3, 4, 5}

    第四种,如果我们知道想要数组的长度,但是希望对指定位置元素初始化。

    声明一个长度为5的整数数组,为索引为1和3的位置指定元素初始化,剩余元素为该元素类型的默认值:

    array := [5]int{1: 1, 3: 3}

    注意:当一个数组被声明时,它里面包含的每个元素都会被初始化为该元素类型的默认值。一旦数组被声明了,那么它的数据类型跟长度都不能再被改变。如果你需要更多的元素,那么只能创建一个你想要长度的新的数组,然后把原有数组的元素拷贝过去。

    数组操作

    使用内置函数len()和cap()返回数组长度和数组容量。实例如下:

    package main
    
    import "fmt"
    
    func main() {
        array := [2]int{}
        fmt.Printf("数组长度:%d,数组容量:%d
    ", len(array), cap(array))
    }

    运行结果:

    数组长度:2,数组容量:2

    使用 [] 操作符来访问数组元素:

    改变索引为2的元素的值

    array := [5]int{1, 2, 3, 4, 5}
    array[2] = 100

    注意:数组可以通过下标进行访问,数组下标是从0开始,最后一个元素下标是:len(array)-1。如果下标在数组合法范围之外,则触发访问越界。实例如下:

    package main
    
    func main() {
        array := [5]int{1, 2, 3, 4, 5}
        array[5] = 100
    }

    编译错误:

    ./main.go:5:7: invalid array index 5 (out of bounds for 5-element array)

    数组赋值操作,一个数组可以被赋值给任意相同类型的数组:

    注意:

    数组的类型同时包括数组的长度和可以被存储的元素类型,数组类型完全相同才可以互相赋值

    var arr1 [5]string
    arr2 := [5]string{"Linux", "Python", "Java", "Golang", "DBA"}
    arr1 = arr2

    多维数组

    数组总是一维的,但是可以组合成多维的。多维数组通常用于有父子关系的数据或者是坐标系数据:

    声明一个二维数组

    var array [3][6]int

    使用数组字面值声明并初始化

    array := [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}

    指定外部数组索引位置初始化

    array := [4][2]int{1: {20, 21}, 3: {40, 41}}

    同时指定内外部数组索引位置初始化

    array := [4][2]int{1: {20, 21}, 3: {40, 41}}

    使用内置函数len()和cap()返回多维数组长度和多维数组容量。实例如下:

    package main
    
    import "fmt"
    
    func main() {
        array := [3][6]int{}
        fmt.Printf("数组长度:%d,数组容量:%d
    ", len(array), cap(array))
    }

    运行结果:

    数组长度:3,数组容量:3

    通过 [] 操作符来访问数组元素:

    var array [2][2]int
    array[0][0] = 0
    array[0][1] = 1
    array[1][0] = 2
    array[1][1] = 3

    相同类型的多维数组相互赋值:

    var arr1 [2][2]int
    var arr2 [2][2]int
    arr2[0][0] = 0
    arr2[0][1] = 1
    arr2[1][0] = 2
    arr2[1][1] = 3
    arr1 = arr2
  • 相关阅读:
    2014 年最热门的国人开发开源软件TOP 100
    欢迎访问李培冠博客
    Go语言学习之路(持续更新)
    租房项目 获取地区信息服务
    租房项目 启动前的处理
    一步步带你用 FastDFS 搭建文件管理系统 详细的不得鸟
    golang 两个go程轮流打印一个切片
    golang 拷贝大切片一定比小切片代价大吗
    matlab 如何把数组A中与数组B中元素相同的元素删除
    golang 如何翻转含有中文 数字 英文字母等任意字符串
  • 原文地址:https://www.cnblogs.com/jiangchunsheng/p/10752904.html
Copyright © 2020-2023  润新知