Like C, Go's formal grammar uses semicolons to terminate statements, but unlike C, those semicolons don't appear in the source. Instead the lexical analyzer when scanning the source uses a simple rule to automatically insert semicolons, so the text is mostly free of them from the outset.
The lexical analyzer always inserts a semicolon after the symbol. This could be summed up as, "if the newline comes after a segment that could end a statement, insert a semicolon".
That is, the semicolon is added by the lexical analyzer, and according to what I have read in several sources, the semicolon is not added to make the code cleaner, you can see that the go packages (¿C:/Go/src ?) do not carry it.
Also, gofmt removes semicolons from your code when you're programming Go in Visual Studio, for example, so whether it's better for the compiler or not, Go's basics "stipulate" not to put it.
Source: https://nachopacheco.gitbooks.io/go-es/content/doc/go-efficient/index.html#dots-and-commas
That is, the semicolon is added by the lexical analyzer, and according to what I have read in several sources, the semicolon is not added to make the code cleaner, you can see that the go packages (¿C:/Go/src ?) do not carry it.
Also, gofmt removes semicolons from your code when you're programming Go in Visual Studio, for example, so whether it's better for the compiler or not, Go's basics "stipulate" not to put it.
You can also read https://groups.google.com/forum/#!topic/golang-nuts/XuMrWI0Q8uk for more information.