考虑这段代码:
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
因为它是一个包含值而不是指针的切片,也许我会想念......任何人都能解释一下吗?
答案 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