dieses Stück Code betrachten:append Wert schneiden eine Scheibe
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
}
ich habe ein Stück vom Typ TestCaseItem
Struktur. In dieser Struktur habe ich eine Schicht von String- und Bool-Eigenschaften. Zuerst rufe ich func1
Funktion, um einige Daten zu greifen und dann über diese Scheibe zu iterieren und versuchen, mehr Daten insdhed, aber die Ausgabe dieses Codes ist [{[test1 test2] [] []}]
wo sind die booleans?
ich fühle mich wie das Problem ist []TestCaseItem
cuz ist eine Scheibe, die Werte statt Zeiger hält und vielleicht werde ich etw vermissen. kann jemand das erklären?
ja das ist wahr, aber alle von ihnen sind Slices, so weit ich weiß Scheiben sind Verweise auf ein zugrunde liegendes Array, aber in diesem Fall beziehen sie sich nicht, warum ist das? – afrikaan
@kyur: Es hat nichts mit dem Zeiger in der Scheibe selbst zu tun, Sie haben die 'TestCaseItem' Werte kopiert, was bedeutet, dass Sie nicht in die gleichen Scheibenwerte geschrieben haben. – JimB