V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
bandian
V2EX  ›  问与答

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

  •  
  •   bandian · 2020-03-14 19:26:04 +08:00 · 1107 次点击
    这是一个创建于 1741 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码如下:

    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}。

    不知道是什么问题。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3281 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 12:08 · PVG 20:08 · LAX 04:08 · JFK 07:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.