鉴于:
type MyInterface interface{
MyMethod() int
}
var im MyInterface
...
如果我打电话给:
switch t := im.(type) {
case:....
default:...
}
声明变量的实际类型t
是什么?为了说明这个问题:如果我想写
var t //What type should I use?!
我要如何申报t
?
例如,在Delphi中,我们具有以下结构:
TTypeInfo = record
Kind: TTypeKind;
Name: string;
{TypeData: TTypeData}
end;
我相信我寻找GoLang东西是类似于TTypeKind
,其中有诸如潜在价值tkInteger
,tkString
等等。
在C ++中,我们找到了type_info
类类型,它也提供了一些此功能。
我会使用什么类型t
的var t...
声明?这有可能吗?
Go中的类型开关很奇怪而且很特殊。这不是碰巧应用于类型的另一种形式的概括。
就我所知,您不能使用来编写它var
(我知道您仅以var
表格形式举例说明)。
在case
switch 的子句中,指定在这种情况下t
的类型(请参阅@Mue的答案)。在子句中,它具有的原始类型。default
im
为了回答您的问题,t
这种情况下的符号很奇怪,很特殊,并且仅在切换时才有意义。它的类型是上下文相关的。我什至不敢称它为变量。
编辑,推测:
我没有看过编译器,但我怀疑它会将每个构造器都解构case
为一个类型断言(cast),其结果是该case
子句范围内的局部变量。为了方便语法,您可以使用t
符号来引用每个符号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句