Go Tour Slices练习逻辑

Bul*_*ula 8 go slice

我正试图完成Exercise: SlicesGo Go之旅.
但是我真的不明白我被要求做什么.

实施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)
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经创建了dy长度的切片.但是我不明白下一步.我是否需要创建一个for循环,在其中我将切片的每个元素分配给dx范围内的值?我不是要求代码,而是要求解释/澄清

Von*_*onC 13

我是否需要创建一个for循环,在其中我将切片的每个元素分配给dx范围内的值?

是:

  • 一个外部循环,用[x]指定一个大小的[]uint8切片dx,
  • 与内循环" y的每个元素" a[x](这是一种[]uint8),以便分配a[x][y]与要求值(即,的"感兴趣的功能"一样x^y,(x+y)/2x*y).
    x并且y是切片范围内的索引(a,然后a[x]):请参阅" For语句 ".

我喜欢(x ^ y) * (x ^ y):

水库

正如rwilson04评论如下:

x*x + y*y 是另一个好人

x平方加y平方


小智 12

请在此处找到包含两种方法的建议。

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)
}
Run Code Online (Sandbox Code Playgroud)

  • OP 明确提到他们不仅仅对代码感兴趣,而是想要解释。这个答案恰恰相反。 (4认同)
  • 我发现该代码非常有用。 (3认同)
  • 该代码可能对OP没有帮助,但对其他人有帮助 (2认同)