結論としては、Show 関数の引数には関数を渡すためです。
https://qiita.com/rock619/items/f412d1f870a022c142d0#exercise-slices
にある以下の Show 関数がポイントです。
go
1func main() {
2 pic.Show(Pic)
3}
Show 関数は実際には以下のようになっています。
go
1func Show(f func(int, int) [][]uint8) {
2 const (
3 dx = 256
4 dy = 256
5 )
6 data := f(dx, dy)
7 m := image.NewNRGBA(image.Rect(0, 0, dx, dy))
8 for y := 0; y < dy; y++ {
9 for x := 0; x < dx; x++ {
10 v := data[y][x]
11 i := y*m.Stride + x*4
12 m.Pix[i] = v
13 m.Pix[i+1] = v
14 m.Pix[i+2] = 255
15 m.Pix[i+3] = 255
16 }
17 }
18 ShowImage(m)
19}
https://github.com/golang/tour/blob/master/pic/pic.go#L15-L33
この関数のシグネチャを見ると分かりますが、func(int, int) [][]uint8
となっています。
実際には Show を呼び出したときにはこの Show の中で引数として渡された値(関数型です)を実行しています。
の部分です。よって、
int型の引数を2つ受け取らないといけない
ではなく関数を渡しているため OK ということです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/01 05:37