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
Golang:如何更改接口切片中的结构字段值_Go_Struct_Interface_Slice - Fatal编程技术网

Golang:如何更改接口切片中的结构字段值

Golang:如何更改接口切片中的结构字段值,go,struct,interface,slice,Go,Struct,Interface,Slice,游乐场问题: 我有一部分接口,我可以确定它们的类型(实际上我不知道,所以我必须对其进行类型切换,但为了清晰起见,我省略了这一点)。如何为接口后面的结构中的字段赋值?类型断言似乎删除了引用 我也尝试过使用指针,但这也不起作用,主要是因为我当时不能进行类型断言(type*inter不能进行类型断言),而且当我取消引用它时,甚至有点让 我在围棋方面没有那么丰富的经验,如果能得到任何帮助,我将不胜感激。您不能更改界面中存储的值,您需要使用指向要更改的值的指针: for i := 0; i < 5;

游乐场问题:

我有一部分接口,我可以确定它们的类型(实际上我不知道,所以我必须对其进行类型切换,但为了清晰起见,我省略了这一点)。如何为接口后面的结构中的字段赋值?类型断言似乎删除了引用

我也尝试过使用指针,但这也不起作用,主要是因为我当时不能进行类型断言(type*inter不能进行类型断言),而且当我取消引用它时,甚至有点让


我在围棋方面没有那么丰富的经验,如果能得到任何帮助,我将不胜感激。

您不能更改界面中存储的值,您需要使用指向要更改的值的指针:

for i := 0; i < 5; i++ {
    slice = append(slice, &b{a: a{name: "Tom"}})
}

for i, _ := range slice {
    x := slice[i].(*b)
    x.name = "Tim"
}
i:=0的
;i<5;i++{
slice=append(slice,&b{a:a{name:“Tom”})
}
对于i,z:=范围切片{
x:=切片[i]。(*b)
x、 name=“Tim”
}

为了清楚起见,我可以建议删除解决方案中的“不起作用”注释吗?我有点困惑为什么这样做行不通,直到我意识到他的评论来自他的例子:p@william.taylor.09已删除复制粘贴的评论,谢谢;)