0
考虑这一段代码的:追加值到切片的切片
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
结构的片。在那个结构中我有一些字符串和布尔属性。首先我调用func1
函数来获取一些数据,然后迭代该切片并尝试在内部追加更多数据,但此代码的输出是[{[test1 test2] [] []}]
布尔值在哪里?
我觉得问题是[]TestCaseItem
因为它是一个容纳值而不是指针的切片,也许我会想念某事。有人可以解释这一点吗?
是的,这是真的,但所有这些都是切片,据我所知切片是对底层数组的引用,但在这种情况下,他们不引用这是为什么? – afrikaan
@kyur:它与片本身中的指针没有任何关系,您正在复制'TestCaseItem'值,这意味着您没有写入相同的片值。 – JimB