That's an embarrassingly huge improvement. thx
On 11/2/16 4:33 AM, roger peppe wrote:
I'd suggest something like this:
https://play.golang.org/p/w1Vxg6b2Ey
Not too much repeated code there, and no need for the reflect package either.
cheers,
rog.
On 1 November 2016 at 17:13, <wwar...@gmail.com> wrote:
Basically, the idea is: given a json structure, and a list of strings or
integers, treat the list as a path into the structure and return the value
at that point. There are some things this doesn't do yet, among them: handle
float values, handle slice indexes that are out of range, handle paths that
are longer than the struct is deep, etc. But what i've shared runs against
the sample json.
On Tuesday, November 1, 2016 at 1:04:21 PM UTC-4, wwa...@gmail.com wrote:
https://play.golang.org/p/LhOTUuTVqA
On Tuesday, November 1, 2016 at 12:50:09 PM UTC-4, Bill Warner 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.
--
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.