Упражнение с ломтиками Golang - мой код не работает, если используется итерация индекса и значения - PullRequest
0 голосов
/ 09 июля 2019

Я делаю учебник по Голангу, и самое первое упражнение вызывает у меня головную боль.

В двух словах упражнение хочет, чтобы я динамически создал массив с размером dx * dy..

Это моя функция, которая получает dx, dy и возвращает массив [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
}

Разве это не работает, потому что ithRow является копией resultArray[i], но не ссылкой на нее?Если да, то почему это не ссылка на него (например, какова выгода или вариант использования его копирования)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...