Go 切片练习中的错误

问题描述 投票:0回答:2

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

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))
}

但是我收到以下错误

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

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

go arguments
2个回答
6
投票

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

pic.Show(Pic)

传入你的函数

Pic
本身,就满足要求了。


0
投票

您可以在 pc.Show 查看源代码: https://cs.opensource.google/go/x/tour/+/master:pic/pic.go

pic.Show 将您的函数作为参数,然后调用值为 256, 256 的函数

© www.soinside.com 2019 - 2024. All rights reserved.