【发布时间】:2020-10-17 17:56:04
【问题描述】:
下面是代码:
type T struct {
list []bool
flag bool
length uint64
}
func (o *T) Print() error {
o.increase(newSize)
o.list[newSize] = true
}
func (obj *T) increase(neeSize uint64) {
newBufferSize := 2 * newSize
tempSeq := NewReceiverSequence(newBufferSize)
copy(tempSeq.sequence, obj.sequence)
obj = tempSeq
return
}
在调试过程中,在Print() 中,我们看到o.increase(newSize) 没有更新o 的成员,increase 中的行obj = tempSeq,因此引发了错误:
运行时错误:索引超出范围 [19],长度为 10
换行
o.list[newSize] = true
10 是调用o.increase(newSize) 之前o.sequence 的大小
为什么在调用o.increase(newSize) 后increase() 没有更新?
【问题讨论】:
-
Print()中的newNumber是什么?它来自哪里? -
@Flimzy 我认为,对于这个查询,这不是一个相关的问题。不是吗?
-
提供Minimal, reproducible example 始终与问题相关。
-
@Flimzy 很抱歉。下次我会努力改进的