GoLang:括号中包含的属性的语义含义?

时间:2017-10-10 18:30:46

标签: go interface

Go Newb here - 我遇到过以下Go代码,我没有写

$(this).css('color', 'yellow');

我不理解if tc, ok := tng.(ThingClasser); ok { //... do some stuff ... } 的语义。

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

但是,ok本身看起来像是属性访问,而不是方法调用。

然而,tng.(ThingClasser)周围的parens是我以前从未见过的皱纹。另外,如果重要的话,ThingClasser符号在本项目的其他地方被定义为接口,所以我想这可能是围绕实现接口的一些语法糖 - 但是两个回归的价值使我困惑。

谷歌搜索没有具体的东西,但这是谷歌的难点之一。

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

1 个答案:

答案 0 :(得分:3)

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