The Go language brings back the ":=" to mean declare and assign, while inferring type. a := 5 You can also equivalently do var a = 5 I almost never use the latter within functions (only at module scope). I believe the former is forbidden except within functions.
Then you also get the operator inconcistency between "assigning to a new variable" and "assigning to an existing variable" and is it so important to tell the two apart from within an operator, of all things?
When writing Go, I have been way more inconvenienced by its error handling mechanics than having to tell that I want a new variable using a few more characters.