Ok! I'm looking at this: https://golang.org/src/encoding/json/encode.go

On Tuesday, November 1, 2016 at 1:13:31 PM UTC-4, Nathan Fisher wrote:
>
> I guess it becomes a question of what operations you want to do on the 
> data. If you look at the implementation of the Json package and sort 
> interface it might provide you with some approaches to achieve what you 
> want. Json demonstrates reflection, sort demonstrates how to invert the 
> problem in a way that works well with golang interfaces that doesn't 
> require generics.
> On Tue, 1 Nov 2016 at 16:50, Bill Warner <wwa...@gmail.com <javascript:>> 
> wrote:
>
>> Yes it's just a fragment. Let me clean it up a bit, then I'll share a 
>> playground link.
>>
>>
>> On 11/1/16 12:47 PM, Volker Dobler wrote:
>>
>> Am Dienstag, 1. November 2016 02:07:49 UTC+1 schrieb wwa...@gmail.com: 
>>>
>>> Hello all,
>>>
>>> I'm new to Go, and I have a question about identifying types as they're 
>>> encountered in traversing a map[string]interface{}.
>>>
>>> I've ended up with a big sieve of type assertions something like this:
>>>
>>>         if mt.Mi, ok = m.(map[string]int); ok {
>>>             nval, ok = mt.Mi[mk]
>>>         } else if mt.MI, ok = m.(map[string]interface{}); ok {
>>>             nval, ok = mt.MI[mk]
>>>         } else if mt.Mai, ok = m.(map[string][]int); ok {
>>>             nval, ok = mt.Mai[mk]
>>>         } else if mt.Mas, ok = m.(map[string][]string); ok {
>>>             nval, ok = mt.Mas[mk]
>>>         } else if mt.Mmm, ok = m.(map[string]map[string]interface{}); ok 
>>> {
>>>             nval, ok = mt.Mmm[mk]
>>>
>>> mt here is a struct that performs no work; it just associates a type to 
>>> a name, so that the run-time can see the types of the left and the right 
>>> sides of the assignment and determine if an assignment is possible. I 
>>> really hate looking at that statement, but all my attempts at using 
>>> reflection have failed as the compiler can't allocate with all the possible 
>>> types that could be returned, even though in my application I only want to 
>>> allocate for these five types. So that's my question: Can I DRY this up?
>>>
>>
>> The code you showed is basically a noop: If this is going to compile
>> than nval must be of type interface {} and you could replace all this
>> with a simple
>>     nval = m
>> You either did not show the last else-block or something is strange here.
>>
>> V.
>>  
>>
>>
>> -- 
>> 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...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
> -- 
> - from my thumbs to yours
>

-- 
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