If you assign something to an interface variable, no matter if it's an int,
a string, or a reflect.Value, it gets "wrapped" inside an interface value
and you have to use interf.(Type) to get it out. That's what the "type
assertion" is for.
reflect.ValueOf, instead, takes whatever you have (int, string, float) and
wraps it inside a reflect.Value. ValueOf is not meant to pull original
values out of interfaces, it is just meant to get a variable of type Value
that you can inspect and manipulate with the various functions in the
reflect package.
On Friday, September 25, 2015 at 2:51:28 AM UTC+2, Gbr wrote:

Much appreciated.

But that means I don't understand the subtle difference between
reflect.ValueOf(X) and the type assertion X.(reflection.Value).

From value.go, reflect.ValueOf() returns a new Value initialized to point
to the same data as the value contained by the interface. Other than not
(apparently) creating a new Value instance, what does a type assertion do

The Laws of Reflection do not touch on this point. Is there another
source or discussion on point that you can recommend?
On Thursday, September 24, 2015 at 4:33:59 PM UTC-7, Roberto Zanotto wrote:

https://play.golang.org/p/LvmE1rM8CH ;)
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Search Discussions

Discussion Posts


Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 4 of 5 | next ›
Discussion Overview
groupgolang-nuts @
postedSep 24, '15 at 11:29p
activeSep 25, '15 at 10:12p



site design / logo © 2022 Grokbase