Glad I could help. I also enjoy using package reflect very much, it makes 
up for the lack of generics very well in certain situations.
By the way, to copy things into a pointer with reflection you normally do 
p.Elem().Set(anotherValue).
In this case it wasn't necessary, since New already returns a pointer to a 
zero value.
Make sure to read the following article to learn about addressability and 
assignability, if you haven't already:
https://blog.golang.org/laws-of-reflection

On Monday, September 5, 2016 at 10:34:16 PM UTC+2, dc0d wrote:
>
> You're awesome! And Go's reflection is much better than what I've expected 
> -  and yes, I like it, I use it!
>
> On Tuesday, September 6, 2016 at 12:57:45 AM UTC+4:30, Roberto Zanotto 
> wrote:
>>
>> If you want a pointer instead of the direct value, just use New instead 
>> of Zero:
>> v = reflect.New(fd.Type().Elem()).Interface()
>>
>> On Monday, September 5, 2016 at 9:30:13 PM UTC+2, dc0d wrote:
>>>
>>> Exactly! Thanks! Now, how to put it inside the pointer? I mean, how to 
>>> get it's address and put that address inside the pointer variable?
>>>
>>> On Monday, September 5, 2016 at 10:47:23 PM UTC+4:30, Roberto Zanotto 
>>> wrote:
>>>>
>>>> I should learn to read the questions more carefully before answering -_-
>>>> In the code you commented out, fd.Type() is a pointer type, so the zero 
>>>> value of a pointer type is a nil pointer.
>>>> If you do fd.Type().Elem() it gives you the "dereferenced" type of the 
>>>> value.
>>>> So, maybe you want:
>>>> v = reflect.Zero(fd.Type().Elem()).Interface()
>>>>
>>>> On Monday, September 5, 2016 at 7:28:13 PM UTC+2, dc0d wrote:
>>>>>
>>>>> How can I fill a pointer to point to the zero value of underlying type?
>>>>>
>>>>> Like in:
>>>>>
>>>>> if fd.Kind() == reflect.Ptr {
>>>>>  if fd.IsNil() {
>>>>>  // how to set v (pointer) to point to a zero value of underlying 
>>>>> type?
>>>>>  // using this:
>>>>>  // v = reflect.Zero(fd.Type()).Interface()
>>>>>  // still gives a nil value.
>>>>>  } else {
>>>>>  v = fd.Interface()
>>>>>  }
>>>>> }
>>>>>
>>>>>
>>>>>
>>>>> I want to fill v with the zero value of the underlying direct type.
>>>>>
>>>>

-- 
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+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to