0
코드의이 부분을 고려 슬라이스의 슬라이스 :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
사촌 포인터 대신 값을 보유하고 아마도 sth가 그리울 것입니다. 아무도 이것을 설명 할 수 있습니까?
예 그렇긴하지만 모든 슬라이스가 슬라이스가 기본 배열에 대한 참조임을 알고 있습니다. 그러나이 경우에는 왜 참조가되지 않습니까? – afrikaan
@kyur : 슬라이스 자체의 포인터와 관련이 없으므로, 같은 슬라이스 값에 쓰지 않았 음을 의미하는'TestCaseItem' 값을 복사하고있었습니다. – JimB