美文网首页
07 Golang值类型——数组

07 Golang值类型——数组

作者: learninginto | 来源:发表于2021-03-22 11:53 被阅读0次
    数组

    数组的长度是类型的一部分

    • 数组定义和初始化

    var 数组变量名 [元素数量]T

    var a [3]int
    //定义一个长度为3的整型数组a
    a[0] = 80
    a[1] = 90
    a[2] = 10
    var arr [3]int
    var arr1 [3]string
    var arr2 = [3]int{1, 3, 4}
    arr3 := [3]string{"php", "nodejs", "golang"}
    fmt.Println(arr,arr2,arr2)//[0 0 0] [   ] [1 3 4]
    

    注意:数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。5[int]和4[int]是不同的类型

    var arr1 [4]int
    var arr2 [5]int
    fmt.Printf("arr1=%T arr2=%T", arr1, arr2)
    //arr1:[4]int arr2:[5]int
    

    编译器根据初始值的个数自行推断数组长度

    var numArray = [...]int{1, 2}
    var cityArray = [...]string{"php", "nodejs", "golang"}
    

    指定索引值的方式来初始化数组

    func main(){
        a := [...]int{1:1, 3:5}
        fmt.Pringln(len(arr))//4
    }
    
    数组的循环遍历
    • for
    var arr = [3]int{23,24,5}
    for i := 0; i < len(arr); i++ {
        fmt.Println(arr[i])
    }
    
    • for range
    var arr = [3]int{23,24,5}
    for k, v := range arr { //k对应下标,v对应值
        fmt.Println(v)
    }
    
    值类型和引用类型
    • 值类型

    基本数据类型和数组都是值类型

    var a = 10
    b := a 
    a = 20
    fmt.Println(a, b)//20 10
    
    var arr1 = [...]int{1, 2, 3}
    arr := arr1
    arr1[0] = 11
    fmt.Println(arr1, arr2)//[11 2 3]  [1 2 3]
    
    • 引用类型(切片)
    var arr1 = [...]int{1, 2, 3}
    arr2 := arr1
    arr1[0] = 11
    fmt.Println(arr1, arr2)//[11 2 3] [11 2 3]
    
    多维数组

    Go语言是支持多维数组的,但通常使用时不会超过二维

    var 数组变量名 [元素数量][元素数量]T

    //创建一个三行两列的数组
    var arr = [3][2]string{
        {"北京", "上海"},
        {"广州", "深圳"},
        {"成都", "重庆"}
    }
    for _, v1 := range arr {
        for _, v2 := range v1{
            fmt.Println(v2)
        }
    }
    for i := 0; i < len(arr); i++ {
        for j := 0; j < len(arr[i]); j++ {
            fmt.Println(arr[i][j])
        }
    }
    

    多维数组只有在第一层可以使用...来让编译器推导数组长度

    arr := [...][2]string{
        {"北京", "上海"},
        {"广州", "深圳"},
        {"成都", "重庆"}
    }
    

    相关文章

      网友评论

          本文标题:07 Golang值类型——数组

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