Go is a statically typed language, but the time you get into the case,
you must know the concrete type of the v. You allows it to be either
map[string]interface{} or map[string]int, this is not a single known
type, so the original input type (interface{}) is used.
On Sun, 2020-02-23 at 01:24 -0800, Glen Huang wrote:
> Another slightly related topic:
>
> switch v := i.(type) {
> case map[string]interface{}, map[string]int:
> fmt.Print(v)
> }
>
> Ideally v is of type map[string]interface{}, but it's interface{}
> instead.
>
> On Sunday, February 23, 2020 at 5:12:27 PM UTC+8, Glen Huang wrote:
> > Hi,
> >
> > I have a function that accepts an argument of type
> > map[string]interface{}, and I also have a value of type
> > map[string]int.
> >
> > Currently it seems I can't directly pass the value to the function.
> > Is there anyway I can directly coerce it or a new value of the
> > exact matching type must be created?
> >
> > I find it quite surprising that you can directly assign any
> > variables to interface{} but not when they are both "scoped inside"
> > a map or a slice. Is the asymmetry by design?
> >
> > Regards
>
> --
> 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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/3bd425dd-1ca4-4bb3-8385-07c3aece5912%40googlegroups.com
> .
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/18004e151ed33a21ef53b8696067c75218d9b109.camel%40kortschak.io.