Golang恐慌:运行时错误:索引超出范围仅在调试器外部运行时发生

Golang恐慌:运行时错误:索引超出范围仅在调试器外部运行时发生,第1张

概述我有以下代码用于查找给定切片中给定总和的两个整数: type Store_object struct { C int I int Prices []int}//..other unrelated functions...func FindItemPairs(scenarios []Store_object) ([]string, error) { 我有以下代码用于查找给定切片中给定总和的两个整数:
type Store_object struct {    C      int    I      int    Prices []int}//..other unrelated functions...func FindItemPairs(scenarios []Store_object) ([]string,error) {    var results []string    for scIndex := 0; scIndex < len(scenarios); scIndex++ {        scenario := scenarios[scIndex]        for prIndex := 0; prIndex < len(scenario.Prices); prIndex++ { //<--!sc            firstItem := scenario.Prices[prIndex]            if firstItem >= scenario.C {                continue            }            for cmpIndex := prIndex + 1; cmpIndex < len(scenario.Prices); cmpIndex++ {                secondItem := scenario.Prices[cmpIndex]                switch {                case secondItem >= scenario.C:                    continue                case firstItem+secondItem == scenario.C:                    result := "Case #" + strconv.Itoa(scIndex+1) +                        " " + strconv.Itoa(firstItem) + " " +                        strconv.Itoa(secondItem)                    results = append(results,result)                }            }        }   }   return results,nil}

但是,当我尝试运行我的代码来查找项目对时,我收到以下错误:

panic: runtime error: index out of rangegoroutine 1 [running]:   <store_credit>.FindItemPairs(0x208208000,0x1e,0x20,0x0,0x0)<store_credit_location>.go:76 +0x4ac main.main()    <main_dir>/test_sc.go:16 +0x24dexit status 2

(相关行标注为< - !sc以上和< - !main以下) 为了尝试调试,我使用了以下项目https://github.com/mailgun/godebug进行测试,发现我的代码执行没有问题.

我目前不知道我将如何访问超出范围的值,但不知道我将如何进一步调试…

任何有关这方面的指导将不胜感激!

有关更多上下文,请参阅我正在尝试实施的代码:https://code.google.com/codejam/contest/351101/dashboard#s=p0

编辑:对于更多上下文,这是我正在运行的调用此函数的主文件:

func main() {    cases,err := store_credit.Readlines("A-small-practice.in")    if err != nil {        fmt.Println(err)    }    fmt.Println(cases)    results,err := store_credit.FindItemPairs(cases) //<--!main    if err != nil {        fmt.Println(err)    }    for i := 0; i < len(results); i++ {        fmt.Println(results[i])    }}

Readlines工作正常,没有任何问题.

您似乎可能在某处进行数据竞争.尝试使用-race标志运行它.

go run -race myfile.go

总结

以上是内存溢出为你收集整理的Golang恐慌:运行时错误:索引超出范围仅在调试器外部运行时发生全部内容,希望文章能够帮你解决Golang恐慌:运行时错误:索引超出范围仅在调试器外部运行时发生所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1293730.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存