First of all, thanks a lot for your solution andrey!

Let me explain what I'm trying to do --- I'm trying to covert my struct
into map with  github.com/fatih/structs
https://groups.google.com/d/msg/golang-nuts/eyYnelZF1zo/Z0IPBcArCwAJ

but the following gave me "panic: not struct"

type Server struct {
Name    string
ID      int32
Enabled bool
}

s := []Server{
{
Name:    "Arslan",
ID:      123456,
Enabled: true,
},
{
Name:    "Arslan",
ID:      123456,
Enabled: true,
},
}

m := structs.Map(s)

That's why I'm wrapping a slice under a struct to make it works *for my
"map[string]interface {}" data*.



On Tue, Aug 22, 2017 at 10:48 AM, Konstantin Khomoutov <kos...@bswap.ru>
wrote:

> On Tue, Aug 22, 2017 at 07:38:03AM -0700, Tong Sun wrote:
>
> > How to initialize a go struct like the following?
> >
> >  type Server struct {
> >  Name    string
> >  ID      int32
> >  Enabled bool
> >  }
>
> This type definition looks pretty much OK.
>
> >  s := struct {
> >     Servers     []Server{
> >       {
> >         Name:    "Arslan",
> >         ID:      123456,
> >         Enabled: true,
> >       },
> >       {
> >         Name:    "Arslan",
> >         ID:      123456,
> >         Enabled: true,
> >       },
> >     }
> >   }
>
> ...and this is a very strange idea: struct types contain fixed number
> of named fields, so
>
>   s := struct{
>     // what's this?
>   }
>
> > That didn't work so I tried to introduce a new type to capture it:
> >
> >  type Server struct {
> >  Name    string
> >  ID      int32
> >  Enabled bool
> >  }
> >  type Servers struct {
> >  servers []Server
> >  }
>
> This is possible but arguably don't needed.
> If all you need is merely a slice of Server instances,
> just use it.
>
> >  s := &Servers{servers: []Server{
> >       {
> >         Name:    "Arslan",
> >         ID:      123456,
> >         Enabled: true,
> >       },
> >       {
> >         Name:    "Arslan",
> >         ID:      123456,
> >         Enabled: true,
> >       },
> >     }
> >
> > but that failed also.
> >
> > What's the correct way?
>
> In the simplest case:
>
>   s := []Server{
>     Server{
>       Name:    "Arslan",
>       ID:      123456,
>       Enabled: true,
>     },
>     ...
>   }
>
> If you need your nested structs, then
>
>   s := Servers{
>     servers: []Server{
>       Server{
>         Name:    "Arslan",
>         ID:      123456,
>         Enabled: true,
>       },
>       ...
>     }
>   }
>

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