V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
bandian
V2EX  ›  问与答

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

  •  
  •   bandian · Mar 14, 2020 · 1435 views
    This topic created in 2248 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   ·   3067 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:54 · PVG 20:54 · LAX 05:54 · JFK 08:54
    ♥ Do have faith in what you're doing.