6

私は囲碁ツアーの演習に取り組んでいますが、理解できない障害にぶつかりました。

私はやっていExercise: Slicesますが、このエラーが発生しています:

256 x 256

panic: runtime error: index out of range [0] with length 0

goroutine 1 [running]:
main.Pic(0x100, 0x100)
    /tmp/sandbox1628012103/prog.go:14 +0xcf
golang.org/x/tour/pic.Show(0xc0000001a0)
    /tmp/gopath962180923/pkg/mod/golang.org/x/tour@v0.0.0-20201207214521-004403599411/pic/pic.go:32 +0x28
main.main()
    /tmp/sandbox1628012103/prog.go:25 +0x25

これが私のコードです:

package main

import (
    "fmt"
    "golang.org/x/tour/pic"
)

func Pic(dx, dy int) [][]uint8 {
    fmt.Printf("%d x %d\n\n", dx, dy)

    pixels := make([][]uint8, 0, dy)

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

        for x := 0; x < dx; x++ {
            pixels[y][x] = uint8(x * y)
        }
    }

    return pixels
}

func main() {
    pic.Show(Pic)
}
4

2 に答える 2

8

スライス

文字列、配列、配列へのポインタ、またはスライスaの場合、一次式

a [低:高]

サブストリングまたはスライスを作成します。インデックス式lowおよびhighは、結果に表示される要素を選択します。結果には、0から始まり、長さが高-低に等しいインデックスがあります。

配列または文字列の場合、インデックスのlowとhighは0 <= low <= high<=lengthを満たす必要があります。スライスの場合、上限は長さではなく容量です。

インデックス

フォームの一次表現

斧]

xでインデックス付けされた配列、スライス、文字列、またはマップの要素を示します。値xは、それぞれインデックスキーまたはマップキーと呼ばれます。次のルールが適用されます。

タイプAまたは*Aの場合(Aは配列型)、またはタイプSの場合(Sはスライス型):

x must be an integer value and 0 <= x < len(a)

a[x] is the array element at index x and the type of a[x] is
the element type of A

if a is nil or if the index x is out of range, a run-time panic occurs

スライス、マップ、チャネルの作成

make(T, n)       slice      slice of type T with length n and capacity n
make(T, n, m)    slice      slice of type T with length n and capacity m

yは整数値で、0 <= y <len(pixel [] uint8)である必要があります。xは整数値で、0 <= x <len(pixel [] [] uint8)である必要があります。例えば、

package main

import "tour/pic"

func Pic(dx, dy int) [][]uint8 {
    pixels := make([][]uint8, dy)
    for y := 0; y < dy; y++ {
        pixels[y] = make([]uint8, dx)
        for x := 0; x < dx; x++ {
            pixels[y][x] = uint8(x * y)
        }
    }
    return pixels
}

func main() {
    pic.Show(Pic)
}
于 2012-07-20T19:02:16.503 に答える