If I can, I want to make another comment about Go FAQ.
In section "Why can't the compiler infer the type argument in my program?" we read
"There are many cases where a programmer can easily see what the type
argument for a generic type or function must be, but the language does
not permit the compiler to infer it.
Type inference is intentionally limited to ensure that there is never
any confusion as to which type is inferred.
Experience with other languages suggests that unexpected type
inference can lead to considerable confusion when reading and
debugging a program."
From what I understand this if comment on the situation when we have function `f[T constraint](x, y T)` and we call it like `f(int(1), int(2))` can't infere that T should be a int (maybe it is stupid example, but I only use generics in such obvious cases). If I didn't know generics more I would understand text belowe as saying that code `f(int(1), int(2))` is always invalid and must be replaced by `f[int](1, 2)`. I would suggest to tweek it a bit, to make clear that Go has type inference, only more limited that in other languages.
Of course it is only my opinion.
Best regards,
Kamil