猿问

如何在切片内设置结构的字段?

我声明了一个这样的类型


type Klabel struct {

    values []float64

    label  string

}

然后,我像这样创建了一个这种类型的切片


kdata := []Klabel

如何设置标签变量或将一片浮点数附加到值?


我试过


kdata[0].label = "test"


kdata := make([]Klabel, 10)


kdata[0].label = "test"


kdata = append(kdata[0], kdata[0].label = "test")

好吧,没有成功......


所以任何帮助表示赞赏!提前致谢!


Smart猫小萌
浏览 157回答 2
2回答

呼啦一阵风

你发了这个: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 ...

MYYA

作为另一个答案的替代方案,您也可以这样做:kdata := []Klabel{{label: "test"}}(见 Go Playground)但请注意,切片长度将为 1 而不是 10,因此它并不完全等效。
随时随地看视频慕课网APP

相关分类

Go
我要回答