查看最后一行“.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
答案 0 :(得分:3)
在“参考”实施中(被称为gc
,可在https://golang.org下载):
方法的第一个参数是方法的接收者。
在你的情况下它是一个指针接收器,所以0xc042066150
是
内存中NumberEngine
个实例的地址。
所有参数都在堆栈中传递 - 从左到右。
struct
等复合类型的字段按其在类型中定义的顺序显示。string
和切片是复合类型 - 每个包含两个和三个字段,
分别为:指针+长度和指针+长度+容量。有关详细信息,我们需要util.(*NumberEngine).Number
方法的签名,以及它使用的任何自定义类型的定义(如果有)。