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

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

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

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

スポンサーリンク

背景

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

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

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

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

条件のみの for 文(For statements with single condition)

最も単純な形式では、for 文は真偽値の条件が true と評価される間、ブロックの繰り返し実行を指定する。条件は各反復の前に評価される。条件が省略された場合、真偽値 true と等価である。

for a < b {
	a *= 2
}

解説

他の言語の while に相当

この形式は、他の言語の while ループとまったく同じ動きをします。

// Go
for a < b {
    a *= 2
}

// 他の言語なら
// while (a < b) {
//     a *= 2;
// }

条件が true の間は繰り返し、false になったらループを抜けます。条件は各反復の最初にチェックされるので、最初から条件が false なら一度も実行されません。

a := 100
b := 10
for a < b {
    fmt.Println("実行されない")  // a=100 > b=10 なので最初から false
}

条件を省略すると無限ループ

条件を書かないと true と同じ扱いになり、無限ループになります。

for {
    fmt.Println("永遠に続く")
}

無限ループは breakreturn で抜けるのが一般的です。

for {
    line, err := reader.ReadString('\n')
    if err != nil {
        break  // エラー(EOF含む)でループ終了
    }
    process(line)
}

よくある使い方

入力待ちループ

for scanner.Scan() {
    fmt.Println(scanner.Text())
}
// scanner.Scan() が false を返すとループ終了

リトライ処理

for retries > 0 {
    err := doRequest()
    if err == nil {
        break
    }
    retries--
    time.Sleep(time.Second)
}

条件が変化するまで待つ

for !ready {
    time.Sleep(100 * time.Millisecond)
}

この形式はシンプルで読みやすいので、「条件が満たされるまで繰り返す」という場面で自然に使えます。

おわりに 

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

よっしー
よっしー

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

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

コメント

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