Go certainly does not use the Hindley-Milner. Why do you think so? In fact, Go does not have type inference at all , only with the construction := and uses an extremely simple rule for accepting the evaluated type on the right side and applying it to the newly declared variable on the left. Actually, this is pretty damn similar to the C ++ 11 auto keyword (except for const rules and references).
source share