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.

Reply via email to