dongqieli4164 2019-03-04 17:41
浏览 13
已采纳

为什么我的append函数将切片的每个成员更改为要添加的新项目?

I am making a simple prime factor function that can put a slice that is [][]int like

prime_factors_mult(315) => [[3,2],[5,1],[7,1]]

but instead of this result I get [[7,1][7,1][7,1][7,1]] which is afterwards reduced to a empty slice because they repeat them selfs. I tried to look at it with step by step and it changes all the values to the last append. What should I do to avoid this ?

func prime_factors_mult(x []int)(y [][]int){// Problem 36
    in :=[]int{0,0}
    var k [][]int
    for _,item := range x{
        tok := 0
        for i:=0;i<len(x);i++{
            if item == x[i]{
                tok++
            }
        }
        in[0]=item
        in[1]=tok
        k=append(k,in)
    }
    for _,item := range k{
        for i:=0;i<len(k);i++{
            if item[0] != k[i][0]{
                y = append(y,item)
            }
        }
    }
    return
}
  • 写回答

2条回答 默认 最新

  • douao2019 2019-03-04 17:50
    关注

    You create your in slice once and then modify it each time, so you add the exact same object to k each time.

    Append a new slice instead:

    k=append(k,[]int{item, tok})
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 netty整合springboot之后自动重连失效
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击