カテゴリ: Go言語 更新日: 2026/03/23

Go言語のwhile的なforループの使い方!条件式ループの基本を解説

Go言語のwhile的なforループの使い方!条件式ループの基本を解説
Go言語のwhile的なforループの使い方!条件式ループの基本を解説

先生と生徒の会話形式で理解しよう

生徒

「Go言語ではwhile文って使えないんですか?」

先生

「いい質問ですね。実はGo言語にはwhile文はないんですが、for文を使って同じことができますよ。」

生徒

「じゃあ、Goでwhileみたいな繰り返しをしたいときはどう書けばいいんですか?」

先生

「それでは、Go言語のfor文を使った条件式ループの書き方を、わかりやすく説明していきましょう!」

1. Go言語にはwhile文がない?

1. Go言語にはwhile文がない?
1. Go言語にはwhile文がない?

多くのプログラミング言語には「while(ワイル)」という繰り返し構文があります。たとえば「条件がtrueの間だけ処理を続ける」といった基本のループです。ですが、Go(ゴー)言語にはwhileという専用キーワードはありません。その代わりに、1つのfor文であらゆる繰り返しを表現する設計になっており、while的な条件式ループもforで書けます。

ポイントは「Goのfor=他言語のforwhile」という考え方です。文法要素を減らして読みやすさと学習コストを下げる狙いがあり、初心者でも同じ書き方に統一できるためミスが減ります。条件判定だけで回す場合はfor 条件式 { ... }と書けば、いわゆるwhileと同じ挙動になります。まずは「whileが無い」のではなく「forに一本化されている」と捉えると理解がスムーズです。


// 他言語の while (condition) { ... } に相当
for condition {
    // 条件がtrueの間だけ繰り返す
}

この統一ルールを知っておくと、Go言語の繰り返し処理(ループ)の読み書きがぐっと楽になります。以降の章では、この「条件式だけのfor」を使って、数字カウントや入力待ちなどの実例を順に確認していきましょう。

2. Go言語でwhile的な繰り返しをする基本の形

2. Go言語でwhile的な繰り返しをする基本の形
2. Go言語でwhile的な繰り返しをする基本の形

Goで「ある条件を満たす間、処理を繰り返す」には、forに条件式だけを書く形を使います。見た目はシンプルですが、発想は他言語のwhileと同じで、条件がtrueのあいだだけ本文が回り続けるという仕組みです。使うときは①ループ前で変数を用意する、②本文の最後で値を更新して終了条件に近づける――この2点だけ意識すれば迷いません。


// 基本形:条件がtrueの間だけ繰り返す(while風)
for 条件式 {
    // 条件式がtrue(真)の間、ここが何度も実行されます
}

具体例として、カウンタが上限に達するまで繰り返すコードを見てみましょう。初期化・条件・更新という流れが自然に読めるので、初心者でも挙動を追いやすくなります。


package main

import "fmt"

func main() {
    n := 1          // ① 初期化:スタート値
    limit := 5      // 上限
    for n <= limit { // ② 条件:nがlimit以下なら回る
        fmt.Println(n)
        n++          // ③ 更新:終了条件に近づける(忘れると無限ループ)
    }
}

ポイントは、n++のような「更新」を毎周で必ず行うことです。これがないと条件が永遠に満たされ、止まらなくなります。while相当の書き方は、入力待ちや残り回数の管理などにも素直に応用できます。まずは「初期化→条件→更新」をセットで考える習慣を付けると、Go言語の条件式ループがぐっと扱いやすくなります。

3. 実際に書いてみよう!数字をカウントする例

3. 実際に書いてみよう!数字をカウントする例
3. 実際に書いてみよう!数字をカウントする例

ここでは、「初期化→条件→更新」という流れを体で覚えるために、1から5まで順番に表示する小さなプログラムを作ります。while的な条件式ループをforで書くときは、ループに入る前にスタート値を決め、本文では表示や処理を行い、最後にカウンタを更新して終了条件へ近づけるのが基本です。


package main

import "fmt"

func main() {
    count := 1          // ① 初期化:数え始める値
    for count <= 5 {    // ② 条件:countが5以下のあいだ繰り返す
        fmt.Println(count) // 本文:いまの値を使った処理
        count++            // ③ 更新:次の周回に向けて1増やす
    }
}

このプログラムでは、countが1から始まり、count <= 5の条件を満たすかぎり本文が回り続けます。各周回の最後でcount++が実行され、やがて条件が成り立たなくなるとループが終了します。流れが「始点を決める」「条件を見る」「値を進める」と自然につながるため、処理の見通しが良くなります。

出力結果は以下のとおりです。上から順に一歩ずつ数が増えていき、5に達したら止まることが確認できます。


1
2
3
4
5

応用として、下方向へ数えるときは初期値と条件、更新の向きをそろえれば同じ考え方で書けます。たとえば5から1へ向かう場合は「初期化:5」「条件:1以上」「更新:1ずつ減らす」という組み合わせになります。どちらの向きでも「初期化・条件・更新が矛盾していないか」をチェックする癖を付けると、無限ループや意図しない終了を避けやすくなります。

4. 条件式ループの注意点

4. 条件式ループの注意点
4. 条件式ループの注意点

for文で条件式だけを使う場合、ループの終了条件を忘れてしまうと、永遠に終わらない「無限ループ」になる危険があります。

たとえば、次のように書くと危険です:


for count <= 5 {
    fmt.Println(count)
    // count++ を忘れてしまった!
}

このコードはcountの値が増えないため、ずっとcount <= 5のままで、繰り返しが止まりません。

5. 条件式ループを使った応用例:ユーザーの入力を待つ

5. 条件式ループを使った応用例:ユーザーの入力を待つ
5. 条件式ループを使った応用例:ユーザーの入力を待つ

Goではfor文を使って、ユーザーから正しい入力があるまで繰り返すという処理もできます。

例として、「ユーザーが数字を5と入力するまで繰り返す」プログラムを作ってみましょう。


package main

import (
    "fmt"
)

func main() {
    var input int
    for input != 5 {
        fmt.Print("5を入力してください: ")
        fmt.Scan(&input)
    }
    fmt.Println("正解です!")
}

このプログラムは、ユーザーが5と入力するまでfor文の中を繰り返します。fmt.Scanという命令を使って、キーボードからの入力を受け取っています。

6. なぜGoはwhileを使わないの?

6. なぜGoはwhileを使わないの?
6. なぜGoはwhileを使わないの?

Go言語は、なるべくシンプルに、読みやすく、間違いにくくするために設計されています。whileという命令を使わずに、forに統一しているのはそのためです。

つまり、forだけで色々な繰り返し処理ができるようにして、初心者でも理解しやすいように作られているのです。

7. Go言語のfor文のバリエーション

7. Go言語のfor文のバリエーション
7. Go言語のfor文のバリエーション

Goのfor文には、3つの使い方があります。その中の1つが今回紹介した「条件式ループ」です。

  • ① 初期化・条件式・後処理を使った基本のforループ
  • ② 条件式だけを使ったwhile的なループ(本記事の内容)
  • ③ 条件もなしの無限ループ

今回学んだ②の形は、何回繰り返すかわからないときにとても便利です。

まとめ

まとめ
まとめ

ここまで、Go言語の条件式だけを使ったfor文、いわゆるwhileのように使う書き方を学んできました。多くのプログラミング言語にはwhile文がありますが、Go言語にはwhileという文法が存在しません。その理由は、Goが複雑な文法を増やさず、読みやすくて安全なコードを書けるように設計されているからです。わざわざ同じ意味の書き方を増やすより、for文に統一することで、初心者でも迷わずに繰り返し処理を記述できます。条件だけを書くforは、まさにwhileと同じ役割を果たすため、他の言語から移ってきた人も安心して使えます。

とくに、Go言語のforループは、何回繰り返すかわからない場面でとても役立ちます。たとえば、正しい入力が得られるまで待つ処理や、ゲームのようにユーザーが行動するまで繰り返す処理、ネットワークの通信を確認し続ける処理など、実用的な活用方法が数多くあります。プログラムを現場で動かすと、必ず予想できない状況や、いつ終わるかわからない処理に出会うものです。そうした場面で、条件式付きのforは素直で読みやすく、あとから見た人にも意図が伝わりやすい書き方になります。

もう一つ覚えておきたい大切なポイントは、「終了条件に近づける処理を忘れない」ということです。たとえば、変数を増やしたり減らしたりする操作を入れ忘れると、ループが永遠に止まらず、無限に実行されてしまいます。これは、プログラミング初心者が最初に経験しやすいトラブルのひとつです。無限ループは、画面が止まったり、CPUを使い続けたり、最悪の場合プログラムが動かせなくなることもあるため、実践で気をつけなければいけません。

しかし、基本さえ押さえていれば怖くありません。「初期化」「条件」「更新」という三つの流れが矛盾せず、きちんと先へ進むように書かれていれば、while的なfor文は安全に使えます。たとえば数がだんだん減っていくときは、条件式と更新処理の向きがちゃんと合っているかを確認するだけで、想定通りに動きます。増えるときは増える方向、減るときは減る方向、それがひと目で理解できる書き方が、読みやすいGo言語のスタイルと言えるでしょう。

プログラミング未経験の方にとっては、最初のうちは「条件だけを書くforは特別な書き方なのかな?」と感じるかもしれません。しかし実際には難しい仕組みはなく、「条件を満たす限り繰り返す」というシンプルな考え方さえ覚えれば困ることはありません。他の言語と比べても覚える文法は少なく、書き方を統一できるため、エラーの原因や読み間違いを減らす効果もあります。

実際の現場では、ユーザーに誤った値を入れられたときに繰り返し聞き返す処理、ネットワークからの応答を待つ処理、ファイルが存在するかを確認し続ける処理などで条件式のfor文が多く使われます。さらに、条件がそろった瞬間に処理が終わるため、無駄なCPUの消費も抑えられます。このように、whileを置き換える形でforを使うのは、Go言語らしい美しい考え方でもあるのです。

ここまで読んで「なんとなくわかったけれど、自分で書けるか不安」という方のために、簡単なサンプルをもう一つ紹介します。たとえば、ユーザーが0を入力したら繰り返しを止める小さなプログラムは、次のように書けます。


package main

import (
    "fmt"
)

func main() {
    var num int
    for num != 0 {
        fmt.Print("数字を入力してください(0で終了): ")
        fmt.Scan(&num)
    }
    fmt.Println("終了します")
}

このプログラムは、ユーザーが0を入力するまで何度でも数字を聞き続けます。難しい特別な命令は使っていませんが、「条件式だけのfor」が自然にwhileのような役割を果たしていることがわかります。こういった地味な処理が書けるようになると、プログラミングで作れる幅がどんどん広がります。とくにGo言語は、シンプルで読みやすく、安全で理解しやすいという特徴を持っているため、初心者が最初に習う言語としても向いています。

まとめとして、Go言語で繰り返し処理を書くときは、まず「forで考える」というクセをつけてみるとよいでしょう。回数が決まっているときは基本のfor、回数が決まっていないときは条件式だけのfor、永久に回したいときは条件も初期化も何も書かないfor。この三つの形を知っておくだけで、さまざまな処理に対応できます。特別な書き方を覚えなくても、forひとつで自由に応用できるのが、Goが持つ大きな魅力のひとつです。

先生と生徒の振り返り会話

生徒

「先生、Go言語ってwhile文がないのに、ちゃんと同じことができるんですね!」

先生

「そうなんです。forに一本化されているので、覚える文法が少なくて済みます。」

生徒

「条件だけ書くforがwhileの代わりになるって聞いて、最初は不思議でしたけど、実は仕組みはシンプルなんですね。」

先生

「その通りです。条件がtrueの間だけ回り続けるので、動きをイメージしやすいでしょう?」

生徒

「はい!入力を待つプログラムとか、数を数えるプログラムを書いてみたら、ちゃんと理解できました!」

先生

「慣れてくると、forだけで色々な書き方ができるのが楽しくなりますよ。これからも練習してみましょう!」

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Go言語にはwhile文がないと聞きましたが、PythonやJavaScriptのwhileと同じような処理は本当にfor文だけでできますか?

Go言語ではwhile文を使わず、for文だけで条件式ループを表現します。条件式だけを書いたforを使えば、PythonやJavaScriptのwhile文と同じ「条件がtrueの間だけ繰り返す」処理が可能です。Goのforはとてもシンプルで、whileを別で覚える必要がないため、初心者にも理解しやすい設計になっています。

Go言語のfor文で条件式ループを書くとき、絶対に必要な書き方やルールはありますか?

Go言語ではfor 条件式 と書くだけで条件式ループになります。特別な構文やキーワードは不要です。ただし、条件を満たし続けてしまうと無限ループになるため、値を更新して条件が変わるように注意しましょう。
関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のVSCode開発環境構築完全ガイド!初心者でもわかる拡張機能と設定方法
New2
Kotlin
Kotlinの文字列を1文字ずつ処理する方法!for文とforEachの使い方を初心者向けに解説
New3
Kotlin
Kotlinの文字列比較の方法を徹底解説!==とcompareToの使い方を初心者向けにわかりやすく紹介
New4
Kotlin
Kotlinのrepeatメソッドの使い方を完全解説!初心者でもわかる文字列の繰り返し処理
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.4
Java&Spring記事人気No4
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.5
Java&Spring記事人気No5
Kotlin
Kotlin Multiplatformライブラリの活用例と導入方法を初心者向けに解説!Android・iOS・Webを1つのコードで開発
No.6
Java&Spring記事人気No6
Kotlin
Kotlinで定数を定義する方法!変更されない変数の書き方と命名ルール
No.7
Java&Spring記事人気No7
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.8
Java&Spring記事人気No8
Go言語
Go言語のクリーンアーキテクチャの基本概念と実装例!初心者でもわかる設計パターン完全ガイド