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 <wwar...@gmail.com> 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+unsubscr...@googlegroups.com.
> 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