Вы отправил это:
kdata := make([]Klabel, 10)
kdata[0].label = "test"
И это работает. При печати срез kdata
, выход (Go Playground):
[{[] test} {[] } {[] } {[] } {[] } {[] } {[] } {[] } {[] } {[] }]
Выходной сигнал показывает kdata
имеет 10 элементов, а первый имеет значение метки: "test"
.
Чтобы быть более ясным, распечатать его с:
fmt.Printf("%+v", kdata)
Выход:
[{values:[] label:test} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:}]
Ломтики (в отличие от карт) адресуются. Вы можете изменять поля элементов (которые являются структурами), просто индексируя срез и назначая новые значения этим полям.
Например:
kdata[0].label = "test"
kdata[0].values = []float64{1.1, 2.2}
kdata[0].values = append(kdata[0].values, 3.3)
fmt.Printf("%+v", kdata[0])
Выход:
{values:[1.1 2.2 3.3] label:test}
Если вы хотите добавить ломтик поплавков в values
поле элемента:
vals := []float64{1.2, 2.3}
kdata[0].values = append(kdata[0].values, vals...) // Note the 3 dot ...
Ну, правда, это работает. В следующий раз я буду читать сообщения об ошибках из компилятора более подробно ... Спасибо за ваш ответ! – Steffen