A pointer to X is a distinct type from X.

If reflect.Value references a pointer to a value, you can get a reference to the value by calling Elem().

https://codeeval.dev/gist/7f1f62e411f79377733c1a1aafc4c5fc

Under the hood an interface is also a pointer to its underlying value so Elem() also works on reflect.Value representing interface.