Go言語入門:言語仕様 -Vol.100-

スポンサーリンク
Go言語入門:言語仕様 -Vol.100- 用語解説
Go言語入門:言語仕様 -Vol.100-
この記事は約5分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

本日は、Go言語の言語仕様について解説しています。

スポンサーリンク

背景

Go言語を学び始めて、公式の「The Go Programming Language Specification(言語仕様書)」を開いてみたものの、「英語で書かれていて読むのが大変…」「専門用語ばかりで何を言っているのかわからない…」と感じたことはありませんか? 実は、多くのGo初心者が同じ壁にぶつかっています。

言語仕様書は、Go言語の「正式な取扱説明書」のような存在です。プログラミング言語がどのように動くのか、どんなルールで書くべきなのかが詳しく書かれていますが、その分、初めて読む人には難しく感じられるのも事実です。

そこでこの記事では、言語仕様書の導入部分を丁寧な日本語訳とともに、初心者の方でも理解しやすい補足説明を加えてお届けします。「強く型付けされている」「ガベージコレクション」「並行プログラミング」といった専門用語も、具体例を交えながらわかりやすく解説していきます。

言語仕様書は難しそうに見えますが、一つひとつの概念を丁寧に読み解いていけば、必ず理解できます。一緒に、Go言語の基礎をしっかり学んでいきましょう!

文(Statements)

文は実行を制御する。

Statement  = Declaration | LabeledStmt | SimpleStmt |
             GoStmt | ReturnStmt | BreakStmt | ContinueStmt | GotoStmt |
             FallthroughStmt | Block | IfStmt | SwitchStmt | SelectStmt | ForStmt |
             DeferStmt .

SimpleStmt = EmptyStmt | ExpressionStmt | SendStmt | IncDecStmt | Assignment | ShortVarDecl .

解説

文ってなに?

文(statement)は、プログラムに「何かをしろ」と指示する単位です。前回まで学んだ「式(expression)」は値を計算するものでしたが、文は動作を実行するものです。

// これらはすべて「文」
x := 10              // 短縮変数宣言
fmt.Println(x)       // 式文(関数呼び出しを文として実行)
x++                  // インクリメント文
return x             // return 文

Go のプログラムは、文を上から順に実行していきます。制御構文(iffor など)は、この順序を変えるための文です。

文の種類を整理する

構文定義に出てくるたくさんの文を、役割ごとに分類してみましょう。

宣言

var x int              // 変数宣言
type Point struct{}    // 型宣言
const Pi = 3.14        // 定数宣言

単純文(SimpleStmt):1行で完結する基本的な文

                       // 空文(何もしない)
fmt.Println("hello")   // 式文(式を文として実行)
ch <- 42               // 送信文(チャネルに値を送る)
x++                    // インクリメント/デクリメント文
x = 10                 // 代入文
x := 10                // 短縮変数宣言

制御フロー

if x > 0 { }          // if 文
switch x { }           // switch 文
for i := 0; ; i++ { }  // for 文
select { }             // select 文

ジャンプ

return x               // return 文
break                  // break 文
continue               // continue 文
goto label             // goto 文
fallthrough            // fallthrough 文

並行処理とリソース管理

go f()                 // go 文(ゴルーチンを起動)
defer f()              // defer 文(関数終了時に実行)

構造

{ ... }                // ブロック(文のグループ)
label:                 // ラベル付き文

式と文の違い

Go では式と文が明確に区別されています。式は値を生成し、文は動作を実行します。

x + y        // 式:値を計算する(これだけでは文にならない)
f(x)         // 式でもあり、文としても使える(関数呼び出し)
x++          // 文のみ(値を返さない。C言語とは違う!)

x++ が式ではなく文であることは、Go の重要な設計判断です。y = x++ のような紛らわしいコードが書けなくなっています。

この後の節の見通し

この節は、これから続く各種の文の説明の導入にあたります。ここに列挙されたそれぞれの文について、後続の節で詳しく説明されます。すでに学んだ変数宣言や短縮変数宣言も「文」の一種として位置づけられていることがわかりますね。

おわりに 

本日は、Go言語の言語仕様について解説しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました