今回からThe Go Programming Language Specificationの翻訳をはじめます。
何回かに分けて公開しますので、おつきあいください。


はじめに

この文書はプログラミング言語Goのリファレンスマニュアルです。その他の情報、文書はhttp://golang.org を参照ください。

Go言語はシステムプログラミングを念頭に置いた多目的言語です。
この言語には、強い型付け、ガーベージコレクション、並列処理のサポート機能があります。
プログラムはパッケージという単位から成り、パッケージはそれを利用するプログラムに管理されたアクセスを提供します。
今現在は、従来からあるコンパイル/リンクモデルによる実行バイナリ生成方式を採っています。

Go言語の文法はコンパクトかつ規則的で、IDE(統合開発環境)のような自動ツールにとって解析しやすい言語となっています。

表記方法

この文書はEBNF(Extended Backus-Naur Form)の記法に準拠します。
下はEBNFをEBNF自身で表したものです。

Production  = production_name "=" Expression "." .
Expression  = Alternative { "|" Alternative } .
Alternative = Term { Term } .
Term        = production_name | token [ "..." token ] | Group | Option | Repetition .
Group       = "(" Expression ")" .
Option      = "[" Expression "]" .
Repetition  = "{" Expression "}" .

EBNFでは語句および、下で優先度順に示された演算子による式を組み合わせて定義を行います。

|   いずれか
()  グルーピング
[]  オプション(0 または 1回)
{}  繰り返し (0 ~ n回)

イコールの左辺の名称が小文字場合は、その名称はトークンを識別するために使われます。
名称を他のEBNF文の右辺で使用する場合は、大文字と小文字を混在させて記述します。
シンボルはダブルクォート""、またはバッククォート``でくくられます。

「a ... b」形式はaからbまでのうちの、いずれかの文字のセットを表します。