将值附加到切片的切片

时间:2017-10-10 18:44:21

标签: arrays go append

考虑这段代码:

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
}

我有一个TestCaseItem类型的结构。在该结构中,我有一些字符串和bool属性。首先我调用func1函数来获取一些数据,然后遍历该片段并尝试附加更多数据,但此代码的输出是[{[test1 test2] [] []}]哪里是布尔值?

我觉得问题是[]TestCaseItem因为它是一个包含值而不是指针的切片,也许我会想念......任何人都能解释一下吗?

1 个答案:

答案 0 :(得分:0)

您将bool值附加到TestCaseItems的副本。

您需要使用指向项目的指针:

CommonProtocol

或者您需要附加到切片中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 } 值的Status字段。

TestCaseItem