这个是A Tour of Go这个教程里面的第二个练习,原题如下:
实现
Pic
。它应当返回一个长度为dy
的切片,其中每个元素是一个长度为dx
,元素类型为uint8
的切片。当你运行此程序时,它会将每个整数解释为灰度值(好吧,其实是蓝度值)并显示它所对应的图像。图像的选择由你来定。几个有趣的函数包括
(x+y)/2
,x*y
,x^y
,x*log(y)
和x%(y+1)
。(提示:需要使用循环来分配
[][]uint8
中的每个[]uint8
;请使用uint8(intValue)
在类型之间转换;你可能会用到math
包中的函数。)
这个题比较简单,就是要利用循环,创建一个二维切片(数组),然后给每个元素赋一个值,这个值可以根据二维数组的坐标xy来计算,题目中提供了几个函数。我们用x ^ y
试一下:
package main
import "golang.org/x/tour/pic"
func Pic(dx, dy int) [][]uint8 {
// 二维切片,外层长度为dy
p := make([][]uint8, dy)
// 通过循环,给每个外层元素创建一个切片
for y := range p {
p[y] = make([]uint8, dx)
for x := range p[y] {
// 给每个元素赋值,参考题目中的其他函数
p[y][x] = uint8(x ^ y)
}
}
return p
}
func main() {
pic.Show(Pic)
}
执行结果是一张256X256的图片,如下:
也可以试试其他函数,会生成不同的图片。