我正在尝试制作一个简单的 Golang 示例。该示例位于 golang 之旅的 te 36º 页面中。这是我的代码:package mainimport "code.google.com/p/go-tour/pic"import "fmt"func Pic(dx, dy int) [][]uint8 { dx8 := uint8(dx) s1 := make ([][] uint8, dy) fmt.Printf("%d\n", len(s1), cap(s1)) for i := range s1{ fmt.Printf("%d\n",i) for j := range s1 { fmt.Printf("%d\n",j) s1[i][j] = dx8 } } return s1}func main() { pic.Show(Pic)}我得到的错误是: 256%!(EXTRA int=256)00panic: runtime error: index out of rangegoroutine 1 [running]:panic(0x18b820, 0x1040a010) /usr/local/go/src/runtime/panic.go:464 +0x700main.Pic(0x100, 0x100, 0x0, 0x0, 0x0, 0x0) /tmp/sandbox716191956/main.go:17 +0x4e0code.google.com/p/go-tour/pic.Show(0x1d7988, 0x104000e0) /go/src/code.google.com/p/go-tour/pic/pic.go:20 +0x60main.main() /tmp/sandbox716191956/main.go:26 +0x20Program exited.我只想返回一个Show函数使用的双向切片。
2 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
您需要对图片的两个维度 dy 和 dx 进行切片。例如,
package main
import "golang.org/x/tour/pic"
func Pic(dx, dy int) [][]uint8 {
p := make([][]uint8, dy)
for i := range p {
p[i] = make([]uint8, dx)
for j := range p[i] {
p[i][j] = uint8(i * j)
}
}
return p
}
func main() {
pic.Show(Pic)
}
繁星coding
TA贡献1797条经验 获得超4个赞
您在第二个循环中以错误的大小循环的代码中的问题。你的第二个范围必须是 sieze of s1[i]nots1因为第二个循环处理内部维度。
for i := range s1{
fmt.Printf("%d\n",i)
s1[i] = make ([] uint8, dy)
for j := range s1[i] {
fmt.Printf("%d\n",j)
s1[i][j] = dx8
}
}
- 2 回答
- 0 关注
- 166 浏览
添加回答
举报
0/150
提交
取消