bandian
V2EX  ›  问与答

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

  •  
  •   bandian · Mar 14, 2020 · 1492 views
    This topic created in 2268 days ago, the information mentioned may be changed or developed.

    代码如下:

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

    不知道是什么问题。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   866 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:14 · PVG 04:14 · LAX 13:14 · JFK 16:14
    ♥ Do have faith in what you're doing.