我想知道在使用interface{}
值时如何使用反射设置变量,并且所有类型的结构都可以传递给func F(o interface{})
. 如何将第一个值 (sA) 更改为“你好”?
package main
import (
"fmt"
"reflect"
)
type T struct {
A string
}
func main() {
F(T{"foo"})
}
func F(o interface{}) {
t := reflect.ValueOf(&T{"bar"}).Elem()
s := reflect.ValueOf(&o).Elem()
// ok
fmt.Println("struct: ", t.Field(0).CanSet())
// panics - how to set s.A?
fmt.Println("interface:", s.Field(0).CanSet())
}