GoLang类型开关中的变量“ t”的实际类型是什么?

向量:

鉴于:

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,其中有诸如潜在价值tkIntegertkString等等。

在C ++中,我们找到了type_info类类型,它也提供了一些此功能。

我会使用什么类型tvar t...声明?这有可能吗?

马特·谢尔曼(Matt Sherman):

Go中的类型开关很奇怪而且很特殊。这不是碰巧应用于类型的另一种形式的概括。

就我所知,您不能使用来编写它var(我知道您仅以var表格形式举例说明)。

caseswitch 子句中,指定在这种情况下t的类型(请参阅@Mue的答案)。子句中,它具有的原始类型。defaultim

为了回答您的问题,t这种情况下符号很奇怪,很特殊,并且仅在切换时才有意义。它的类型是上下文相关的。我什至不敢称它为变量。

编辑,推测:

我没有看过编译器,但我怀疑它会将每个构造器都解构case为一个类型断言(cast),其结果是该case子句范围内的局部变量为了方便语法,您可以使用t符号来引用每个符号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在Go类型开关中声明了一个单独的变量?

golang多种类型的开关

C#中lambda的实际类型是什么?

类型转换在用于受限存储的枚举的开关中失败

Haskell:fa类型实际上是什么意思?

错误:Swift开关中'String'类型的值没有成员'hasSuffix'

为什么在Any变量的开关中让x as Float大小写不匹配?

R中“ factor”和“ string”数据类型之间的实际区别是什么?

为什么实际类型是Double?

在Fortran中及其相关的“类型绑定子例程”实际上是什么?

Expression <Func <.. >> .. Compile()的实际类型是什么?

std :: setw,std :: setfill等的实际返回类型是什么?

在ajax中,实际上请求类型为“ HEAD”是什么?

范围内过滤方法的实际返回类型是什么?如何使其成为向量?

const自动引用绑定到(空)指针-实际类型是什么?

Python Paramiko Channel.recv()的实际返回值类型是什么?

在C#中(数据类型,数据类型)x =(值,值)是什么意思?x的实际数据类型是什么?

此类型定义的实际含义是什么?

XAML控件使用“可见性”类型而不是普通的“布尔”的实际原因是什么?

pthread_mutex_t是什么类型?

使用qemu:/// session的gnome-box中实际的默认网络类型是什么?

如何知道零件请求中零件的实际内容类型是什么

streamsize,streamoff和其他与流相关的数据类型的实际类型是什么

“ this”关键字实际上指的是什么类型?

T*&返回类型到底是什么

让成员函数返回类型成为要返回的实际对象的超类的正确方法是什么?

C# 中类似 JSON 的对象的实际类型是什么 (new {};)

在 numpy 中使用复合类型的实际示例是什么?

i18next“t”变量的类型是什么(TYPESCRIPT)