让我们分解以下几行:
log.Println(reflect.ValueOf(newitem).Elem())
该值
newItem是一个reflect.Value。表达式
reflect.ValueOf(newItem)返回
reflect.Value包含的
reflect.Value。因为所包含的值不是指针或接口,所以调用了
Elem()紧急情况。
由于参数不是指针类型,因此以下行不会引起恐慌,因为reflect.Indirect返回其参数。
log.Println(reflect.Indirect(reflect.ValueOf(newitem)))
问题在于应用程序将reflect.Values与reflect.Values包装在一起。如以下代码所示,直接使用reflect.Value:
log.Println(reflect.Indirect(newitem))log.Println(newitem.Elem())
在操场上运行它!



