Golang:如何更改接口切片中的结构字段值
Golang: How to change struct field value in slice of interfaces
操场上的问题:https://play.golang.org/p/UKB8f4qGsM
我有一部分接口,我很确定它们有哪种类型(实际上我不知道,所以我必须输入 switch ,但为了清楚起见我把它留了下来)。如何为接口后面的结构中的字段赋值?类型断言似乎带走了引用。
我也尝试过使用指针,但它也不起作用,主要是因为我无法键入 assert 然后(type *inter 不能被类型断言)并且当我取消引用它时,它有点让甚至有...
我在 Go 方面没有那么丰富的经验,如果能得到任何帮助,我将不胜感激。
您不能更改存储在接口中的值,您需要使用指向您要更改的值的指针:
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"
}
操场上的问题:https://play.golang.org/p/UKB8f4qGsM
我有一部分接口,我很确定它们有哪种类型(实际上我不知道,所以我必须输入 switch ,但为了清楚起见我把它留了下来)。如何为接口后面的结构中的字段赋值?类型断言似乎带走了引用。
我也尝试过使用指针,但它也不起作用,主要是因为我无法键入 assert 然后(type *inter 不能被类型断言)并且当我取消引用它时,它有点让甚至有...
我在 Go 方面没有那么丰富的经验,如果能得到任何帮助,我将不胜感激。
您不能更改存储在接口中的值,您需要使用指向您要更改的值的指针:
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"
}