这种类型断言,def-referencing引起了我的疯狂。所以我有一个嵌套结构Key string/Value interface{}
对。存储在Value
是一个[]interface
我想修改每个值。以下是创建一个Bar
数组并将其传递给ModifyAndPrint
函数的示例,该函数应该修改顶层结构。我遇到的问题是写作它并不实际修改z的内容,我不能做它的q := z.([]interface{})[i].(Bar)
或&
。修改接口{} golang的阵列
有没有办法做到这一点?如果是这样,我错过了什么组合?
package main
import "fmt"
type Bar struct {
Name string
Value int
}
func ModifyAndPrint(z interface{}){
fmt.Printf("z before: %v\n", z)
for i, _ := range(z.([]interface{})) {
q := z.([]interface{})[i]
b := (q).(Bar)
b.Value = 42
fmt.Printf("Changed to: %v\n", b)
}
fmt.Printf("z after: %v\n", z)
}
func main() {
bars := make([]interface{}, 2)
bars[0] = Bar{"a",1}
bars[1] = Bar{"b",2}
ModifyAndPrint(bars)
}
https://play.golang.org/p/vh4QXS51tq
http://stackoverflow.com/questions/15945030/change-values-while-iterating-in- golang – akonsu 2015-01-20 20:59:22
我很困惑那个链接。这似乎是说使用索引,我正在做。 – FuriousGeorge 2015-01-20 21:14:57