gpt4 book ai didi

Golang 索引超出范围

转载 作者:IT王子 更新时间:2023-10-29 02:14:49 27 4
gpt4 key购买 nike

我想举一个 Golang 的简单例子。该示例位于 golang 之旅的第 36º 页中。这是我的代码:

package main

import "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)0
0
panic: runtime error: index out of range

goroutine 1 [running]:
panic(0x18b820, 0x1040a010)
/usr/local/go/src/runtime/panic.go:464 +0x700
main.Pic(0x100, 0x100, 0x0, 0x0, 0x0, 0x0)
/tmp/sandbox716191956/main.go:17 +0x4e0
code.google.com/p/go-tour/pic.Show(0x1d7988, 0x104000e0)
/go/src/code.google.com/p/go-tour/pic/pic.go:20 +0x60
main.main()
/tmp/sandbox716191956/main.go:26 +0x20

Program exited.

我只想返回 Show 函数使用的双向 slice 。

最佳答案

您需要为图片的两个维度(dy 和 dx)制作 slice 。例如,

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

关于Golang 索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36260994/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com