在 golang 中使用 append 创建二维数组的时候,创建好的数据突然发生改变

2020-03-14 19:26:04 +08:00
 bandian

代码如下:

package src

func Subsets(nums []int) [][]int {
	var sets = make([][]int, 0)
	var t = make([]int, 0)
	sets = append(sets, t)
	for i := 0; i < len(nums); i++ {
		for _, v := range sets {
			t = append(v, nums[i])
			sets = append(sets, t)
		}
	}
	return sets
}

测试数据长度小于等于 4 的时候一切正常,当长度大于 4,如 []int{1,2,3,4,5},一些计算好的数据会突然发生改变。
debug 的时候发现,刚开始 sets[15] 计算出来是 []int{1,2,3,4},但是当 sets[21] 计算结束,开始计算 sets[22] 的时候,sets[15] 会突然变成 []int{1,2,3,5}。

不知道是什么问题。

1038 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX