Dak*_*ani 3 syntax functional-programming go
我最近开始寻找功能性的go示例,并发现了以下功能:
mapper := func (i interface{}) interface{} {
return strings.ToUpper(i.(string))
}
Map(mapper, New(“milu”, “rantanplan”))
//[“MILU”, “RANTANPLAN”]
Run Code Online (Sandbox Code Playgroud)
现在在此函数中,您可以看到return
mapper 的值是:
strings.ToUpper(i.(string))
。
但是,这种i.(string)
语法是什么意思?我尝试搜索,但没有发现任何特别有用的信息。
i.(string)
将(或至少尝试)i
(type interface{}
)强制转换为type string
。我说尝试是因为说i
是对的int
,这会惊慌。如果这听起来不太好,则可以将语法更改为
x, ok := i.(string)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果i
不是string
,则代码ok
为false
,而代码不会慌乱。