我有2个数组声明为:var input []string
和var output []string
。
输入数组最初填充了一些ID。输出数组为NULL。
每次迭代后,我想从输入数组中删除一个随机元素,并将其添加到输出数组。
最后,输出数组中的所有元素都将与输入数组相同(但具有不同的排序(索引))。
for index := 0; index < len(input); index++ {
if !visited[index] {
//do something
}
}
output[#iteration index] = input[current index]
当我尝试执行此操作时,我得到了array out of bounds error
。
对于output
阵列,您需要使用append
或分配其初始容量以匹配的大小input
。
// before the loop
output := make([]string, len(input))
将是我的建议,因为append
会导致大量不必要的重新分配,并且由于基于,您已经知道所需的容量input
。
另一件事是:
output = append(output, input[index])
但是就像我说的那样,从我观察到的内容来看,append的初始容量成倍增长。如果您未指定任何内容,则该值将以2为底,这意味着您将需要进行一些不需要的重新分配,然后才能达到所需的容量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句