Go指南练习(2):slice

2019-04-15 16:30发布

1. 练习

实现函数Pic,它返回一个长度为dy的slice,其每个元素是长度为dx、类型为8位无符号整数的slice(slice嵌套)。 当你运行函数Pic时, 它会把每个slice元素作为对应像素的灰度值(好吧,其实是蓝度)并显示整个slice对应的图像。 计算每个像素灰度值的方法由你决定,可能用到的方法有 (x+y)/2、x*y、x^y ,x和y是里外层slice的索引。需要使用循环来分配[][]uint8中的每个[]uint8。使用uint8(intValue)进行类型转换。

2. 解题思路

  • 外层slice长度为dy,里层slice长度为dx
  • 自选方法有(x+y)/2、x*y、x^y,我们可以选择其一,作为里层slice元素值
  • 使用两层for循环嵌套,计算里层slice元素值(颜 {MOD}值)。不同的自选方法会有不同的运行结果

3. 代码实现

package main import "golang.org/x/tour/pic" func Pic(dx, dy int) [][]uint8 { // 外层slice a := make([][]uint8, dy) for x := range a { // 里层slice b := make([]uint8, dx) for y := range b { // 给里层slice每个元素赋值 b[y] = uint8(x*y - 1) } // 给外层slice每个元素赋值 a[x] = b } return a } func main() { pic.Show(Pic) }