Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Struct 如何在切片中设置结构的字段?_Struct_Go_Slice - Fatal编程技术网

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

Struct 如何在切片中设置结构的字段?,struct,go,slice,Struct,Go,Slice,我声明了一个这样的类型 type Klabel struct { values []float64 label string } kdata := []Klabel 然后,我创建了一个这样的切片 type Klabel struct { values []float64 label string } kdata := []Klabel 如何设置label变量或向值附加一个浮动片段 我试过了 kdata[0].label = "test" 及 及 嗯,

我声明了一个这样的类型

type Klabel struct {
    values []float64
    label  string
}
kdata := []Klabel
然后,我创建了一个这样的切片

type Klabel struct {
    values []float64
    label  string
}
kdata := []Klabel
如何设置label变量或向值附加一个浮动片段

我试过了

kdata[0].label = "test"

嗯,没有成功

因此,任何帮助都是感激的!提前谢谢

您发布了以下内容:

kdata := make([]Klabel, 10)

kdata[0].label = "test"
它是有效的。打印
kdata
切片时,输出为():

输出显示
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:}]
{values:[1.1 2.2 3.3] label:test}

切片(与贴图不同)是可寻址的。您可以通过简单地索引切片并为字段分配新值来更改元素(即结构)的字段

例如:

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:[] label:test} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:}]
{values:[1.1 2.2 3.3] label:test}
如果要在元素的
字段中附加浮动片段,请执行以下操作:

vals := []float64{1.2, 2.3}

kdata[0].values = append(kdata[0].values, vals...) // Note the 3 dot ...
您发布了以下内容:

kdata := make([]Klabel, 10)

kdata[0].label = "test"
它是有效的。打印
kdata
切片时,输出为():

输出显示
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:}]
{values:[1.1 2.2 3.3] label:test}

切片(与贴图不同)是可寻址的。您可以通过简单地索引切片并为字段分配新值来更改元素(即结构)的字段

例如:

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:[] label:test} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:} {values:[] label:}]
{values:[1.1 2.2 3.3] label:test}
如果要在元素的
字段中附加浮动片段,请执行以下操作:

vals := []float64{1.2, 2.3}

kdata[0].values = append(kdata[0].values, vals...) // Note the 3 dot ...

作为另一个答案的替代方案,您也可以这样做:

kdata := []Klabel{{label: "test"}}
()


但是请注意,切片长度将是1而不是10,因此它并不完全相等。

作为另一个答案的替代方法,您也可以这样做:

kdata := []Klabel{{label: "test"}}
()


但是请注意,切片长度将是1而不是10,因此它并不完全相等。

嗯,没错,它是有效的。下次我将更彻底地阅读编译器中的错误消息。。。谢谢你的回答!嗯,是的,它起作用了。下次我将更彻底地阅读编译器中的错误消息。。。谢谢你的回答!