カテゴリ: Go言語 更新日: 2026/01/24

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までの数字を1つずつ表示するプログラムを作ってみましょう。


package main

import "fmt"

func main() {
    count := 1
    for count <= 5 {
        fmt.Println(count)
        count++
    }
}

このプログラムでは、countという変数が1から始まり、5以下の間は繰り返し処理を行い、毎回countの値を1ずつ増やしています。

出力結果は以下のようになります:


1
2
3
4
5

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

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

※ Amazon広告リンク

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言語にはwhile文がないと聞きましたが、PythonやJavaScriptのwhileと同じような処理は本当にfor文だけでできますか?

Go言語ではwhile文を使わず、for文だけで条件式ループを表現します。条件式だけを書いたforを使えば、PythonやJavaScriptのwhile文と同じ「条件がtrueの間だけ繰り返す」処理が可能です。Goのforはとてもシンプルで、whileを別で覚える必要がないため、初心者にも理解しやすい設計になっています。
関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語の短絡評価(ショートサーキット)を使った条件式の工夫をやさしく解説!初心者でも理解できる基本知識
New2
Go言語
Go言語の構造体の初期化パターンとコンストラクタ的関数の書き方を徹底解説!初心者でもわかる基本と実用例
New3
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New4
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Kotlin
Kotlin DSLとGroovy DSLの違いをやさしく解説!初心者でもわかるGradleスクリプトの使い分け
No.8
Java&Spring記事人気No8
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク