我正在做golang教程,very first exercise让我头疼。
简而言之,该练习希望我动态创建具有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]
的副本,但不是对其的引用?如果是这样,为什么不引用它(例如,复制它有什么好处或用例)?