Newb 在这里 - 我遇到了以下一些我没有写的 Go 代码
if tc, ok := tng.(ThingClasser); ok {
//... do some stuff ...
}
我不会理解tng.(ThingClasser)
的语义.
在某些方面,这看起来像一个方法调用 - 即有两个变量(ec
,ok
)准备接受多个返回值。
但是,tng.(ThingClasser)
本身看起来像是属性访问,而不是方法调用。
然而,ThingClasser
周围的圆圈是我以前从未见过的皱纹。 另外,如果它很重要,ThingClasser
符号在这个项目的其他地方被定义为一个接口,所以我认为这可能是围绕一个接口的一些语法糖 - 但随后两个返回值让我感到困惑。
谷歌搜索没有找到任何具体的东西,但这是谷歌搜索的困难之一。
这里有人知道 GoLang 中的调用/语法是什么,并可能指向我相关的手册页,以便我可以进行 RTFM?
这是一个类型断言。返回的值为 1) 对象,转换为给定类型;2) 指示转换是否成功的布尔值。 ThingClasser
是要转换为的类型。文档可在此处找到:https://golang.org/ref/spec#Type_assertions