Suppose we have the function foo defined as follows:
func foo(a string, b string) { ... }
Given that both arguments are of the same type we could omit the type declaration of a:
func foo(a, b string) { ... }
In that case when moving any of the arguments, a becomes the last argument without declared type, which is invalid Go code:
func foo(b string, a) { ... }