Go 紧急堆栈跟踪:值如何映射到函数';谁的论点?

Go 紧急堆栈跟踪:值如何映射到函数';谁的论点?,go,Go,看最后一行“.Number(…” 是否可以从这些十六进制数中识别方法Number()的参数 这将是一个帮助,而不会频繁地点击调试器 panic: runtime error: index out of range goroutine 19 [running]: testing.tRunner.func1(0xc042046340) C:/Go/src/testing/testing.go:622 +0x2a4 panic(0x523e20, 0x5df810) C:/Go/sr

看最后一行“.Number(…”

是否可以从这些十六进制数中识别方法
Number()
的参数

这将是一个帮助,而不会频繁地点击调试器

panic: runtime error: index out of range

goroutine 19 [running]:
testing.tRunner.func1(0xc042046340)
    C:/Go/src/testing/testing.go:622 +0x2a4
panic(0x523e20, 0x5df810)
    C:/Go/src/runtime/panic.go:489 +0x2dd
util.(*NumberEngine).Number(0xc042066150, 0xf4698, 0xa, 0xc042b2a870, 0xa)
编辑:包括方法的完整签名

func (fe *NumberEngine) Number(num int) Number {
编辑:包括数字的定义

type Power struct{ Prime, Exp int }
type Number []Power
在“参考”实现中(该实现称为
gc
,可从以下网址下载):

  • 方法的第一个参数是方法的接收者

    在您的例子中,它是指针接收器,因此
    0xc042066150
    是 内存中该
    NumberEngine
    实例的地址

  • 所有参数都在堆栈上传递-从左到右

    • 复合类型(如
      struct
      s)的字段按在类型中定义的顺序显示
    • string
      s和slice是复合类型-每个字段有两个和三个字段, 分别为:指针+长度和指针+长度+容量

有关更多信息,我们需要
util的签名。(*NumberEngine).Number
方法,以及它使用的任何自定义类型的定义(如果有的话)。

可能是,但如果没有代码,我们无法帮助您。请参阅。这不是完整的方法签名,因为您没有提供
Number
类型的定义,但是堆栈中的
num
参数是
0xf4698
签名只是一个int->util.(*NumberEngine).Number(num int)@RiyazMansoor,我不敢相信它有一个
int
类型的参数。请仔细检查。我已经用完整的方法签名更新了原始帖子。@kostix:return参数也在堆栈上分配(我在链接的答案中忘了提到,但可能应该)@RiyazMansoor:函数的参数被打印出来,其中包括浮点数,我在上面链接的答案中再次详细解释了这一点。字符串是两个单词的标题,所以在参数中看不到实际的字符串内容,只有长度和数据指针。