Go的类型推断算法

Nei*_*l D 7 type-inference go

Go编译器使用什么类型的推理算法?

我尝试在golang上查找,但我找不到文档.我很想假设它会是Hindley-Milner,但我想肯定

Lil*_*ard 21

去肯定不会使用Hindley-Milner.你为什么那么想?事实上,Go一般没有类型推断,只有:=构造,并且使用极其简单的规则来获取右侧的评估类型并将其应用于左侧新声明的变量.它实际上非常类似于C++ 11的auto关键字(除了没有关于处理const和引用的规则).

  • @Tom:这不是类型推断.那只是运行时类型信息. (6认同)
  • 值得注意的是:带有`:=`的类型*"impred"*是在编译时确定的,而不是运行时. (2认同)
  • @Tom:甚至可以在运行时"推断"类型吗? (2认同)