doumei8126 2017-10-10 18:44
浏览 32
已采纳

将值附加到切片的切片

consider this piece of code:

func main() {
    items := func1()

    for _, v := range items {
        v.Status = append(v.Status, false)
    }

    fmt.Println(items)

}

//TestCaseItem represents the test case
type TestCaseItem struct {
    Actual   []string
    Expected []string
    Status   []bool
}

func func1() []TestCaseItem {
    var tc = make([]TestCaseItem, 0)

    var item = &TestCaseItem{}
    item.Actual = append(item.Actual, "test1")
    item.Actual = append(item.Actual, "test2")

    tc = append(tc, *item)

    return tc
}

i have an slice of type TestCaseItem struct. In that struct i have slice of string and bool properties. first i call func1 function to grab some data and then iterate over that slice and try to append more data insdide, but the output of this code is [{[test1 test2] [] []}] where are the booleans ?

i feel like the problem is []TestCaseItem cuz its a slice that holds values rather than pointers and maybe i'll miss sth. can anybody explain this?

  • 写回答

1条回答 默认 最新

  • dongpeng0127 2017-10-10 18:50
    关注

    You're appending the bool values to copies of your TestCaseItems.

    You either need to use a pointer to the items:

    func func1() []*TestCaseItem {
        var tc = make([]*TestCaseItem, 0)
    
        var item = &TestCaseItem{}
        item.Actual = append(item.Actual, "test1")
        item.Actual = append(item.Actual, "test2")
    
        tc = append(tc, item)
    
        return tc
    }
    

    Or you need to append to the Status field of the TestCaseItem value that's in the slice.

    for i := range items {
        items[i].Status = append(items[i].Status, false)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答