• Go语言中的数组(九)


    我刚接触go语言的数组时,有点不习惯,因为相对于JavaScript这样的动态语言里的数组,go语言的数组写起来有点不爽。

    定义数组

    go语言定义数组的格式如下:

    var a [3]int
    
    var 数组名 [数组长度]数组每一项的类型

    初始化数组时,要定义好数组的长度和数组值的类型。注意定义数组时,数组的长度数字应该是常量,如果使用变量来定义长度则会报错

    var l = 3
    var a [l]int
    
    // 此时长度使用变量 l 来定义,会报错

    同时,不同的数组长度和类型,导致最终的数组也是不同的类型:

    var a [3]int
    var b [5]int
    
    // a 和 b 是不同的类型

    数组赋值时是用 {},这点也是我最不习惯的地方:

    func main() {
        var a [3]int
        a = [3]int{1,2,3}
        fmt.Println(a)  // [1 2 3]
    }

    注意打印的结果是中括号的,但是没有用 , 来隔开每一项。

    上面是先定义再赋值的,有点繁琐,可以一步到位地简写:

    func main() {
        a := [3]int{1,2,3}
        fmt.Println(a)
    }

    有时,我们一开始不知道数组的长度应该是多少,此时可以这样定义数组:

    
    
    func main() {
    a := [...]int{1,2,3}
    fmt.Println(a)
    }
    // 用 ... 来表示未知的数组长度

    同时,我们在初始化数组时也可以指定对应下标的值:

    func main() {
        a := [...]int{2:10,5:12}
        fmt.Println(a) // [0 0 10 0 0 12]
    } 

    代码中在定义数组时,指定下标2位置上的值是10,下标5位置上的值是12,其余未指定值的默认为0

    遍历数组

    使用for 循环来遍历数组:

    func main() {
        a := [...]int{1,2,3,4,5}
        for i:=0;i<5;i++{
            fmt.Println(a[i])
        }
    }
    
    // a[i] 是数组取值,格式:数组名[下标]

    也可以使用 range 来遍历:

    func main() {
        a := [...]int{1,2,3,4,5}
        for _,v := range a{
            fmt.Println(v)
        }
    }
    
    // _ 是占位,此位置本来是下标,此处不用下标所以用 _ 占位

    二维数组

    二维数组的定义如下:

    func main() {
        a:=[3][2]int{
            [2]int{1,2},
            [2]int{3,4},
            [2]int{5,6},
        }
        fmt.Println(a)  // [[1 2] [3 4] [5 6]]
    }

    可以看到这样是比较繁琐的,其实可以简化为:

    func main() {
        a:=[3][2]int{
            {1,2},
            {3,4},
            {5,6},
        }
        fmt.Println(a)  // [[1 2] [3 4] [5 6]]
    }

    如果你细心你会发现,我在最后一项后面加上了逗号,这是因为go语言的格式限制,这样收起花括号就不用加逗号了:

    func main() {
        a:=[3][2]int{
            {1,2},
            {3,4},
            {5,6}}
        fmt.Println(a)
    }

    数组是值类型

    没错,在go中数组是值类型,这与我之前接触到的一些动态语言可完全不一样。关于值类型和引用类型,我就不多说了。直接来看下例子吧:

    package main
    
    import "fmt"
    
    func main() {
        var a = [3]int{1,2,3}
        var b = a
        a[0] = 4
        fmt.Printf("a:%v,b:%v",a,b) // a:[4 2 3],b:[1 2 3]
    }
  • 相关阅读:
    UIButton(在代码中使用)
    UIButton的常见设置
    设置按钮的背景图片
    Java Web学习总结(15)——JSP指令
    Java Web学习总结(14)——JSP基础语法
    Java Web学习总结(14)——JSP基础语法
    Oracle学习总结(9)—— Oracle 常用的基本操作
    Oracle学习总结(9)—— Oracle 常用的基本操作
    Oracle学习总结(10)——45 个非常有用的 Oracle 查询语句
    Oracle学习总结(10)——45 个非常有用的 Oracle 查询语句
  • 原文地址:https://www.cnblogs.com/wjaaron/p/11662110.html
Copyright © 2020-2023  润新知