去:多维数组的范围和len?

是否可以在多维数组上使用range和len?


使用var a [3] int8或


package main


func main () {    

        var a [3][5]int8


        for h := range a {

                println(h)

        }

        println(len(a))

}

两者都产生 

0

1

2

3


多亏了dystroy的回答,这是一个我能够适应的编写和读取3维数组的示例(在这里发帖是因为我很难找到任何此类示例,因此也许会对其他人有所帮助):


package main

func main() {

    var a [3][5][7]uint8


    //write values to array

    for x, b := range a {

        for y, c := range b {

            for z, _ := range c {

                    a[x][y][z] = uint8(x*100+y*10+z)

                }

        }   

    }


    //read values from array

    for _, h := range a {

        for _, i := range h {

            for _, j := range i {

                print(j, "\t")

            }

            println()

        }

        println()

    }


}



慕斯王
浏览 234回答 3
3回答

临摹微笑

与大多数语言一样,在Go语言中,所谓的多维数组是数组的数组。该len运营商只给你“外部”数组的长度。如果您认为var声明对您来说可能更清晰var a [3]([5]int8)也可以编译。它是一个大小为3的数组,其元素是int8的大小为5的数组。package mainimport "fmt"func main() {    var a [3][5]int8    for _, h := range a {        fmt.Println(len(h)) // each one prints 5    }    fmt.Println(len(a))  // prints 3, the length of the external array}输出5553为了安全地遍历整个矩阵,您可以执行以下操作:for _, h := range a {    for _, cell := range h {        fmt.Print(cell, " ")    }    fmt.Println()}如果您需要更改内容,可以这样做    for i, cell := range h { // i is the index, cell the value        h[i] = 2 * cell    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go