Golang教程的切片练习-如果使用索引和值迭代,则我的代码不起作用

时间:2019-07-09 05:40:37

标签: go

我正在做golang教程,very first exercise让我头疼。

简而言之,该练习希望我动态创建具有dx * dy尺寸的数组。

这是我的函数,它接收dxdy并返回有效的[dx][dy]uint8数组:

func Pic(dx, dy int) [][]uint8 {
    resultArray := make([][]uint8, dx, dx)
    for i := range resultArray {
        fmt.Println(resultArray[i])
        resultArray[i] = make([]uint8, dy, dy)
        fmt.Println(resultArray)
        for j := range resultArray[i] {
            if (i+j)%30 <= 15 {
                resultArray[i][j] = uint8(255)
            }
        }
    }
    return resultArray
}

但是,使用for i, v := range x的这段代码有效:

func Pic(dx, dy int) [][]uint8 {
    resultArray := make([][]uint8, dx, dx)
    for i, ithRow := range resultArray {
        ithRow = make([]uint8, dy, dy)
        for j := range ithRow {
            if (i+j)%30 <= 15 {
                ithRow[j] = uint8(255)
            }
        }
    }
    return resultArray
}

这是行不通的,因为ithRowresultArray[i]的副本,但不是对其的引用?如果是这样,为什么不引用它(例如,复制它有什么好处或用例)?

0 个答案:

没有答案