diff options
| author | Rob Pike <r@golang.org> | 2010-02-01 20:45:29 +1100 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2010-02-01 20:45:29 +1100 |
| commit | 10eecfc0ddd5349bbdaa12be46d8611e0b96f2d4 (patch) | |
| tree | 618260b2f99a147b7d22df6b05b58c87c9c78737 | |
| parent | de2d6425e8a4c42d3e540690cb62e3ffde9d3370 (diff) | |
| download | golang-10eecfc0ddd5349bbdaa12be46d8611e0b96f2d4.tar.gz | |
language FAQ entry on braces and semicolons
R=rsc, iant, gri
CC=golang-dev
http://codereview.appspot.com/196075
| -rw-r--r-- | doc/go_lang_faq.html | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/doc/go_lang_faq.html b/doc/go_lang_faq.html index 23d634b85..1a8ffcf03 100644 --- a/doc/go_lang_faq.html +++ b/doc/go_lang_faq.html @@ -175,6 +175,36 @@ with the STL, a library for a language whose name contains, ironically, a postfix increment. </p> +<h3 id="semicolons"> +Why are there braces but no semicolons? And why can't I put the opening +brace on the next line?</h3> +<p> +Go uses brace brackets for statement grouping, a syntax familiar to +programmers who have worked with any language in the C family. +Semicolons, however, are for parsers, not for people, and we wanted to +eliminate them as much as possible. To achieve this goal, Go borrows +a trick from BCPL: the semicolons that separate statements are in the +formal grammar but are injected automatically, without lookahead, by +the lexer at the end of any line that could be the end of a statement. +This works very well in practice but has the effect that it forces a +brace style. For instance, the opening brace of a function cannot +appear on a line by itself. +</p> +<p> +Some have argued that the lexer should do lookahead to permit the +brace to live on the next line. We disagree. Since Go code is meant +to be formatted automatically by +<a href="http://golang.org/cmd/gofmt/"><code>gofmt</code></a>, +<i>some</i> style must be chosen. That style may differ from what +you've used in C or Java, but Go is a new language and +<code>gofmt</code>'s style is as good as any other. More +important—much more important—the advantages of a single, +programmatically mandated format for all Go programs greatly outweigh +any perceived disadvantages of the particular style. +Note too that Go's style means that an interactive implementation of +Go can use the standard syntax one line at a time without special rules. +</p> + <h3 id="garbage_collection"> Why do garbage collection? Won't it be too expensive?</h3> <p> |
