go数组

作者: 呦丶耍脾气 | 来源:发表于2023-03-07 21:03 被阅读0次

    1.数组的概念

    数组是相同类型的一组数据构成的长度固定的序列,其中数据类型包含了基本数据类型、复合数据类型和自定义类型。因为数组的内存是一段连续的存储区域,所以数组的检索速度是非常快的,但是数组也有一定的缺陷,就是定义后长度不能更改。

    2.声明数组

    2.1 先声明后使用

    package main
    import "fmt"
    func main() {
        // 声明一个长度为3的整型数组
        var arr [3]int
        arr[0] = 1
        arr[1] = 3
        arr[2] = 5
        fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
    }
    // 输出: 数组arr 类型: [3]int  值: [1 3 5]
    

    2.2 直接初始化使用

    package main
    import "fmt"
    func main() {
        // 直接声明使用
        arr := [3]int{1,3,5}
        fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
    }
    // 输出: 数组arr 类型: [3]int  值: [1 3 5]
    

    2.3 声明数组(不指定长度)

    package main
    import "fmt"
    func main() {
        // 用...代表数组长度, 编译器会自动计算长度
        arr := [...]int{1,3,5,7,9,11}
        fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
    }
    

    3.二维数组

    3.1 先声明后使用

    package main
    import "fmt"
    func main() {
        // 声明一个二维数组
        var arr [3][4]int
        // 赋值使用
        arr[0] = [4]int{1,2,3,4}
        arr[1] = [4]int{5,6,7,8}
        arr[2] = [4]int{9,10,11,12}
        fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
    }
    // 输出: 数组arr 类型: [3][4]int  值: [[1 2 3 4] [5 6 7 8] [9 10 11 12]]
    

    3.2 直接初始化使用

    package main
    import "fmt"
    func main() {
        // 直接声明使用
        arr := [3][4]int{
            {1,2,3,4},
            {5,6,7,8},
            {9,10,11,12},
        }
        fmt.Printf("数组arr 类型: %T  值: %v",arr,arr)
    }
    // 输出: 数组arr 类型: [3][4]int  值: [[1 2 3 4] [5 6 7 8] [9 10 11 12]]
    

    3.3 遍历数组

    package main
    import "fmt"
    func main() {
        // 直接声明多维数组
        arr := [3][4]int{
            {1,2,3,4},
            {5,6,7,8},
            {9,10,11,12},
        }
        // 遍历多维数组
        for key,val := range arr {
            for kk,vv := range val {
                fmt.Printf("第%d维数组,第%d个元素v: %d \n",key,kk,vv)
            }
        }
    }
    /**输出:
    第0组,第0个元素v: 1 
    第0组,第1个元素v: 2 
    第0组,第2个元素v: 3 
    第0组,第3个元素v: 4 
    第1组,第0个元素v: 5 
    第1组,第1个元素v: 6 
    第1组,第2个元素v: 7 
    第1组,第3个元素v: 8 
    第2组,第0个元素v: 9 
    第2组,第1个元素v: 10 
    第2组,第2个元素v: 11 
    第2组,第3个元素v: 12 
    */
    

    4.多维数组

    4.1 三维数组声明

    package main
    
    import "fmt"
    
    func main() {
        // 先声明三维数组
        var arr [2][3][4]int
    
        // 后赋值
        arr[0][0] = [4]int{1,2,3,4}
        arr[0][1] = [4]int{10,20,30,40}
        arr[0][2] = [4]int{100,200,300,400}
    
        arr[1][0] = [4]int{11,22,33,44}
        arr[1][1] = [4]int{111,222,333,333}
        arr[1][2] = [4]int{1111,2222,3333,4444}
        fmt.Printf("arr类型: %T 值: %v \n",arr,arr)
    
        // 直接声明三维数组
        arr2 := [2][3][4]int {
            {
                {1,2,3,4},
                {10,20,30,40},
                {100,200,300,400},
            },
            {
                {11,22,33,44},
                {111,222,333,333},
                {1111,2222,3333,4444},
            },
        }
        fmt.Printf("arr2类型: %T 值: %v",arr2,arr2)
    }
    /**输出
    arr类型: [2][3][4]int 值: [[[1 2 3 4] [10 20 30 40] [100 200 300 400]] [[11 22 33 44] [111 222 333 333] [1111 2222 3333 4444]]] 
    arr2类型: [2][3][4]int 值: [[[1 2 3 4] [10 20 30 40] [100 200 300 400]] [[11 22 33 44] [111 222 333 333] [1111 2222 3333 4444]]]
    */
    

    4.2 遍历三维数组

    package main
    import "fmt"
    func main() {
        // 先声明三维数组
        var arr [2][3][4]int
    
        // 后赋值
        arr[0][0] = [4]int{1,2,3,4}
        arr[0][1] = [4]int{10,20,30,40}
        arr[0][2] = [4]int{100,200,300,400}
    
        arr[1][0] = [4]int{11,22,33,44}
        arr[1][1] = [4]int{111,222,333,333}
        arr[1][2] = [4]int{1111,2222,3333,4444}
        fmt.Printf("arr类型: %T 值: %v \n",arr,arr)
    
        // 遍历输出
        for _,val := range arr {
            for _,vv := range val {
                fmt.Printf("vv类型: %T 值: %v \n",vv,vv)
            }
        }
    }
    /*输出:
    arr类型: [2][3][4]int 值: [[[1 2 3 4] [10 20 30 40] [100 200 300 400]] [[11 22 33 44] [111 222 333 333] [1111 2222 3333 4444]]] 
    vv类型: [4]int 值: [1 2 3 4] 
    vv类型: [4]int 值: [10 20 30 40] 
    vv类型: [4]int 值: [100 200 300 400] 
    vv类型: [4]int 值: [11 22 33 44] 
    vv类型: [4]int 值: [111 222 333 333] 
    vv类型: [4]int 值: [1111 2222 3333 4444] 
    */
    

    相关文章

      网友评论

          本文标题:go数组

          本文链接:https://www.haomeiwen.com/subject/rkuyldtx.html