【问题标题】:What does "i.(string)" actually mean in golang syntax? [duplicate]“i.(string)”在 golang 语法中的实际含义是什么? [复制]
【发布时间】:2019-05-03 19:32:28
【问题描述】:

我最近开始寻找函数式 go 示例,我发现了这个函数:

mapper := func (i interface{}) interface{} {
    return strings.ToUpper(i.(string))
}
Map(mapper, New(“milu”, “rantanplan”))
//[“MILU”, “RANTANPLAN”]

现在在这个函数中,你可以看到映射器的return 值是: strings.ToUpper(i.(string)).

但是,这个i.(string) 语法是什么意思?我尝试搜索,但没有发现任何特别有用的东西。

【问题讨论】:

  • 在谷歌上搜索标点符号时,拼写出来会很有帮助。我通过搜索“去点括号”找到了重复项。
  • @sepp2k 哦,好吧。下次我会用那个。感谢您的提示!

标签: go syntax functional-programming


【解决方案1】:

i.(string) 强制转换(或至少尝试)i(输入interface{})到输入string。我说尝试是因为说 iint 而不是,这会引起恐慌。如果这对您来说听起来不太好,那么您可以将语法更改为

x, ok := i.(string)

在这种情况下,如果i 不是string,那么ok 将是false,并且代码不会恐慌。

【讨论】:

    【解决方案2】:

    i.(string) 表示将i(interface{} type) 转换为string type。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 2019-01-26
      • 2021-10-07
      相关资源
      最近更新 更多