나는 Go 언어 투어에서 엑서사이즈를 진행 중이며 알아낼 수없는 걸림돌을 쳤다. 나는 Exercise: Slices
을하고 그리고 난이 오류가 무엇입니까 : 나는이 문제를 찾을 수없는 내 인생Go Tour, Excercise : Slices 인덱스 범위를 벗어남
package main
import "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)
}
:
여기256 x 256
panic: runtime error: index out of range
goroutine 1 [running]:
main.Pic(0x10000000100, 0x3, 0x417062, 0x4abf70)
/tmpfs/gosandbox-08a27793_4ffc9f4a_3b917355_ef23793d_c15d58cc/prog.go:9 +0xa0
tour/pic.Show(0x400c00, 0x40caa2)
go/src/pkg/tour/pic/pic.go:20 +0x2d
main.main()
/tmpfs/gosandbox-08a27793_4ffc9f4a_3b917355_ef23793d_c15d58cc/prog.go:20 +0x25
내 코드입니다!
그래서 확인 ([] UINT8, DX)는 DX 그것에 제로로 슬라이스한다? 그렇다면 용량과 다른 점은 무엇입니까? 나는 (uint8, 0, dx)를 만들면 dint uint8s를 유지할 수 있지만 현재 비어있는 슬라이스를 만들지 않겠는가? – CaseyB
내 대답보기. 'make ([uint8, dx)]는'make ([uint8, dx, dx)]와 동일하다. 즉, len() = dx와 cap() = dx는'make ([] uint8 , 0, dx)'즉, len() = 0이고 cap() = dx입니다. 두 경우 모두 기본 배열은 cap() = dx 0 값 요소입니다. 인덱스는 0 <= i
peterSO