It's definitely a little ironic that what is needed to make a regular grammar makes the language more inconsistent.
It's definitely a little ironic that what is needed to make a regular grammar makes the language more inconsistent.
E.g., instead of a special ":=" declare-with-auto-type+assign operator, just use ":" in all type declarations, and make the type optional in initialized declarations. Then the following would all be equivalent:
var x : int; x = 5
var x : int = 5
var x := 5
Using ":" in declarations would also make them more readable, and more consistent with most other languages using this type of declaration syntax. [If you've read my other comments about Go on HN, this is a pet peeve of mine... :]Go's syntax does feel pretty sloppy, like it evolved under a variety of different authors and directions, and never really got a cleanup pass in the end...
FYI, the grammar is context-free, not regular.
The difference between make and new is well covered in documentation and on the mailing list.
Do I literally need to link you to the FAQ entry for "make vs new"? Or the docs for initialization? You're the one spreading FUD.