Go 切片练习中的错误

Chr*_*ese 1 arguments go

我正在尝试解决切片练习。我目前的解决方案是

package main

import "golang.org/x/tour/pic"

func Pic(dx, dy int) [][]uint8 {
    picture := make([][]uint8, dy)

    x := dx

    for iy := 0; iy < dy; iy++ {
        picture[iy] = make([]uint8, dx)

        for ix := 0; ix < dx; ix++ {
            x = (x+dy)/2
            picture[iy][ix] = uint8(x)
        }
    }

    return picture
}

func main() {
    pic.Show(Pic(1,2))
}
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

tmp/sandbox931798243/main.go:23:不能在 pic.Show 的参数中使用 Pic(1, 2)(类型 [][]uint8)作为类型 func(int, int) [][]uint8

我究竟做错了什么?这可能是沙箱的错误吗?

Adr*_*ian 5

pic.Show接受一个类型的参数func(int, int) [][]uint8- 您需要向它传递一个函数。您正在传递执行a的结果func(int, int) [][]uint8,即 a [][]uint8。你想要的是:

pic.Show(Pic)
Run Code Online (Sandbox Code Playgroud)

传入您的函数Pic本身,满足要求。