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 golang-nuts+unsubscr...@googlegroups.com. > 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 golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/18004e151ed33a21ef53b8696067c75218d9b109.camel%40kortschak.io.