カテゴリ: Go言語 更新日: 2026/07/30

Go言語にwhile文はない?forでwhile風ループを書く方法

Go言語にwhile文はない?forでwhile風ループを書く方法
Go言語にwhile文はない?forでwhile風ループを書く方法

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

生徒

「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. 条件式ループの注意点

便利な条件式ループですが、書き方を一つ間違えると、プログラムが止まらなくなることがあります。とくに注意したいのは「終了条件に近づける処理を忘れる」ケースです。whileに相当するforでは、自動で数字が増えたり減ったりしないため、自分で値を更新しなければ永遠に同じ値のままになってしまいます。

たとえば、次のコードは危険です:


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

この場合、countはずっと同じ数字のままなので、条件count <= 5がずっと真になってしまい、画面に延々と同じ数字が出続けます。これが「無限ループ」です。

では、どうすれば安全に書けるのでしょうか。ポイントは「毎周で値を少しずつ動かし、条件がいつか false になる流れを作る」ことです。少し手を加えるだけで、正しく終了するループにできます。


for count <= 5 {
    fmt.Println(count)
    count++ // 値を更新することで、いずれ count > 5 になりループが終了
}

更新処理は、増やすだけでなく減らしても構いません。たとえばカウントダウンをしたいときはcount--を使い、「条件:count >= 0」のように組み合わせます。大切なのは、初期化・条件・更新が矛盾していないかを確認することです。ほんの少し意識するだけで、意図しない無限ループを防ぎやすくなります。

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

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

実際のプログラムでは、「正しい値が入るまで待つ」という処理がよく登場します。Go言語ではfor文を使って、ユーザーが条件を満たす入力をするまで繰り返す処理を自然に書くことができます。とくに数値入力のチェックなどで役立ち、ゲームやメニュー選択の仕組みにも応用できます。

たとえば、ユーザーが数字の「5」を入力するまで繰り返すサンプルを見てみましょう。


package main

import (
    "fmt"
)

func main() {
    var input int           // ユーザーの入力を入れる変数
    for input != 5 {        // 入力が5と違う間はループ
        fmt.Print("数字の5を入力してください: ")
        fmt.Scan(&input)    // キーボードから数字を読み取る
    }
    fmt.Println("正解です!") // 5が入力されたらループ終了
}

ポイントは、for input != 5の「条件式だけのfor」です。inputが5と一致しない限り繰り返され、5が入力された瞬間に条件が満たされなくなるため、ループが自動的に止まります。fmt.Scanで数値を読み取るたびに条件が更新されるので、プログラムがユーザーの入力を待ってくれます。

このように、Goの条件式ループは「値が揃うまで待つ」「間違った入力はやり直してもらう」といった実用的な処理にとても便利です。特別な書き方を覚えなくても、基本のforだけで自然に書けるのがGo言語らしいポイントです。

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

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

Go言語があえてwhileを持たないのは、「同じ意味の書き方を増やしたくない」という考え方があるからです。文法が増えるほど覚えることも多くなり、初心者が迷いやすくなります。そこでGoでは、for1つに機能をまとめることで、読みやすさと分かりやすさを両立しています。

実際、whileがなくても困ることはありません。条件だけのforを使えば、他の言語のwhileとまったく同じ動きを実現できます。たとえば、条件が成り立つ間だけ数字を増やすコードは次のように書けます。


count := 1
for count <= 3 {
    fmt.Println(count)
    count++
}

この例では「count <= 3の間だけ繰り返す」という動作がきちんと表現できています。このように、余計な構文を増やさず、必要なことだけに集中できるのがGo言語の特徴です。シンプルな文法は読み間違いを減らし、コードの見通しも良くなります。結果として、初心者から経験者まで扱いやすい言語になっているのです。

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

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

Goのfor文には、実は3つの書き方があります。見た目は同じforでも、使い方を変えることで「回数が決まっている繰り返し」や「いつ終わるかわからない繰り返し」まで柔軟に対応できます。その中のひとつが、この記事で紹介してきた「条件式だけを書く、while的なループ」です。

  • ① 初期化・条件式・後処理をそろえた基本のforループ
  • ② 条件式だけを使うwhile風のループ(今回の中心)
  • ③ 条件を何も書かない無限ループ

たとえば①の形は「1から3まで順番に繰り返す」といった、回数がはっきりしている場面によく使われます。


for i := 1; i <= 3; i++ {
    fmt.Println(i)
}

そして②は、何回繰り返すか決まっていないときに便利です。ユーザーの入力を待ったり、条件がそろうまで処理したいときなど、実際の開発でも出番が多い書き方です。

③の「条件も何も書かない形」は、永久に回り続けるループです。あとで特定のタイミングで抜けたいときに使えますが、正しく使わないと止まらなくなるため注意が必要です。

同じforでも、状況によって書き分けることでコードが読みやすくなります。「決まった回数を回したいのか」「条件がそろうまで待ちたいのか」を意識すると、迷わず選べるようになります。

まとめ

まとめ
まとめ

ここまで、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でwhile的なfor文を書くと、初心者がよくやってしまうミスはありますか?

もっとも多いミスは「値の更新忘れ」です。条件式がずっとtrueのままだと無限ループになります。特に変数を増やしたりユーザー入力を受け取ったりする処理を書き忘れると、プログラムが終了しなくなるので注意が必要です。
関連セミナーのご案内

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

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

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

具体的な開発内容と環境

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

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

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

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

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

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

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

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

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

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

セミナー画像

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

関連記事:
カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptのwhile文とは 初心者でもわかる繰り返し処理の基本と使い方を徹底解説
New2
Kotlin
Kotlinの制御構造まとめ!初心者が覚えるべきポイント
New3
Go言語
Go言語のスライスの容量(cap)と長さ(len)を理解しよう
New4
Kotlin
Kotlinとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
Go言語
Go言語のVSCode開発環境構築完全ガイド!初心者でもわかる拡張機能と設定方法
No.3
Java&Spring記事人気No3
Kotlin
Kotlinのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.4
Java&Spring記事人気No4
Kotlin
Kotlinの関数ドキュメンテーションコメント(KDoc)の書き方を徹底解説!初心者でもわかる丁寧なガイド
No.5
Java&Spring記事人気No5
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.6
Java&Spring記事人気No6
Kotlin
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.7
Java&Spring記事人気No7
Swift
Swift入門ガイド|基本構文と書き方をマスターしよう
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptのif文とは何かを徹底解説初心者でもわかる条件分岐の基本構文と使い方

💻 作業効率アップに

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

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

※ Amazon広告リンク