Go编译器使用哪种类型推断算法?
我在golang上尝试查找文档,但未能找到。我倾向于认为它会是Hindley-Milner算法,但我想确定一下。
Go编译器使用哪种类型推断算法?
我在golang上尝试查找文档,但未能找到。我倾向于认为它会是Hindley-Milner算法,但我想确定一下。
Go语言确实没有使用Hindley-Milner类型系统。你为什么会这样认为呢?事实上,Go语言一般来说没有类型推断,只有在使用:=
结构时才会进行类型推断,它采用极其简单的规则,即将右侧表达式的计算结果类型应用于左侧新声明的变量中。这实际上与C++11的auto
关键字非常相似(除了不涉及处理const
和引用的规则)。
:=
推断出来的类型在编译时就已经确定了,而非运行时。 - thwd