I recently started looking for functional go examples and I found this function:
mapper := func (i interface{}) interface{} {
return strings.ToUpper(i.(string))
}
Map(mapper, New(“milu”, “rantanplan”))
//[“MILU”, “RANTANPLAN”]
Now in this function, as you can see the return
value of mapper is:
strings.ToUpper(i.(string))
.
But, what does this i.(string)
syntax mean? I tried searching, but didn't find anything particularly useful.
i.(string)
casts (or attempts at least) i
(type interface{}
) to type string
. I say attempts because say i
is an int
instead, this will panic. If that doesn't sound great to you, then you could change the syntax to
x, ok := i.(string)
In this case if i
is not a string
, then ok
will be false
and the code won't panic.
i.(string)
means converting i
(interface{}
type) to string
type.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With