0

我有一个切片[]interface{},里面有结构值。

当我尝试反映切片的元素以更新结构的字段时。我收到以下错误

恐慌:反射:reflect.Value.SetInt 使用不可寻址的值

在这里最小化代码:

https://play.golang.org/p/VOycEtG2Nq5

package main

import (
    "fmt"
    "reflect"
)

type A struct {
    B int
}

func main() {
    array := []interface{}{A{1}}
    v := reflect.ValueOf(&array)
    va := v.Elem().Index(0)
    fmt.Println(va.Kind() == reflect.Interface) // true
    fmt.Println(va.CanAddr()) // true
    f := va.Elem().Field(0)
    f.SetInt(2)
    fmt.Println(array)
}
4

0 回答 0