From the documentation for reflect.Value.Pointer()
:
If v's Kind is Func, the returned pointer is an underlying code pointer, but not necessarily enough to identify a single function uniquely. The only guarantee is that the result is zero if and only if v is a nil func Value.
It seems clear that function-valued variables must contain more than just a code pointer. Given that Go supports method pointers, this is hardly surprising - but what is the actual underlying implementation?
(And how does it differ, if at all, for function values created using reflection? See comment in the source for Value.Pointer().)
The "New Implementation" section of the design document describes how function pointers are represented.