是否可以在多维数组上使用range和len?使用var a [3] int8或package mainfunc main () { var a [3][5]int8 for h := range a { println(h) } println(len(a))}两者都产生 0123?多亏了dystroy的回答,这是一个我能够适应的编写和读取3维数组的示例(在这里发帖是因为我很难找到任何此类示例,因此也许会对其他人有所帮助):package mainfunc 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() }}
3 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
与大多数语言一样,在Go语言中,所谓的多维数组是数组的数组。该len运营商只给你“外部”数组的长度。
如果您认为var声明对您来说可能更清晰
var a [3]([5]int8)
也可以编译。它是一个大小为3的数组,其元素是int8的大小为5的数组。
package main
import "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
}
输出
5
5
5
3
为了安全地遍历整个矩阵,您可以执行以下操作:
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
}
- 3 回答
- 0 关注
- 233 浏览
添加回答
举报
0/150
提交
取消