我正在尝试完成Exercise: Slices
from the Go Tour
但是我真的不明白我被要求做什么。
实施Pic。它应该返回一个长度为dy的片段,其中每个元素都是一个dx 8位无符号整数片。运行程序时,它将显示您的图片,将整数解释为灰度(井,蓝光)值。
我有以下代码
package main
import "golang.org/x/tour/pic"
func Pic(dx, dy int) [][]uint8 {
a := make([][]uint8, dy)
return a
}
func main() {
pic.Show(Pic)
}
到目前为止,我已经创建了长度为dy的切片。但是我不明白下一步。我是否需要创建一个for循环,在其中我将切片的每个元素分配给dx范围内的值?我不是要求代码,而是要求解释/澄清
答案 0 :(得分:12)
我是否需要创建一个for循环,在其中我将切片的每个元素分配给dx范围内的值?
是:
[]uint8
dx
个{@ 1}}切片,y
(a[x]
)设置内部循环“[]uint8
”,以便为a[x][y]
分配所请求的值(即“有趣的功能”,如x^y
,(x+y)/2
和x*y
)
x
和y
是切片范围内的索引(a
,然后是a[x]
):请参阅“For
statements”。我喜欢(x ^ y) * (x ^ y)
:
x*x + y*y
是另一个好人
答案 1 :(得分:0)
请在此处找到两种方法的建议。
package main
import "golang.org/x/tour/pic"
func Pic(dx, dy int) [][]uint8 {
p := make([][]uint8, dy)
for y := range p {
p[y] = make([]uint8, dx)
for x := range p[y] {
p[y][x] = uint8(x^y)
// p[y][x] = uint8(x*y)
// p[y][x] = uint8((x+y)/2)
}
}
return p
}
func _Pic(dx, dy int) [][]uint8 {
p := make([][]uint8, dy)
for i := 0; i < dy; i++ {
p[i] = make([]uint8, dx)
}
for y := range p {
for x := range p[y] {
p[y][x] = uint8(x^y)
// p[y][x] = uint8(x*y)
// p[y][x] = uint8((x+y)/2)
}
}
return p
}
func main() {
pic.Show(Pic)
}