GoLang:括在括号中的属性的语义含义

  • 本文关键字:属性 语义 GoLang go interface
  • 更新时间 :
  • 英文 :

Go

Newb 在这里 - 我遇到了以下一些我没有写的 Go 代码

if tc, ok := tng.(ThingClasser); ok {
    //... do some stuff ...
}

我不会理解tng.(ThingClasser)的语义.

在某些方面,这看起来像一个方法调用 - 即有两个变量(ecok)准备接受多个返回值。

但是,tng.(ThingClasser)本身看起来像是属性访问,而不是方法调用。

然而,ThingClasser周围的圆圈是我以前从未见过的皱纹。 另外,如果它很重要,ThingClasser符号在这个项目的其他地方被定义为一个接口,所以我认为这可能是围绕一个接口的一些语法糖 - 但随后两个返回值让我感到困惑。

谷歌搜索没有找到任何具体的东西,但这是谷歌搜索的困难之一。

这里有人知道 GoLang 中的调用/语法是什么,并可能指向我相关的手册页,以便我可以进行 RTFM?

这是一个类型断言。返回的值为 1) 对象,转换为给定类型;2) 指示转换是否成功的布尔值。 ThingClasser是要转换为的类型。文档可在此处找到:https://golang.org/ref/spec#Type_assertions

最新更新