goto文 【go to文】 goto statement

概要

goto文(go to文)とは、多くのプログラミング言語で提供されている構文の一つで、プログラムの実行位置をプログラム中の任意の箇所に変更できるもの。

「goto」のキーワードに続けて、次に実行するコードの位置をラベル行番号などで指定する。プログラム実行されgoto文に差し掛かると、指定した箇所へ実行位置がジャンプし、その箇所にある文から実行が継続される。

CPU命令語にはメモリ上の任意の位置に次の実行箇所を変更するジャンプ命令(無条件分岐)があり、同じ機能をプログラミング言語で再現したものと考えることができる。制御の流れを変更する構文の中で最も単純で、古くから多くのプログラミング言語の仕様に取り込まれてきた。比較的新しい言語の中にはgoto文が用意されていないものもある。

効用と批判

if文条件分岐)などと組み合わせれば、条件付きのループや特定のブロックのスキップ、遠く離れたプログラム末尾付近から冒頭付近への移動など、様々な複雑な制御を記述することができる。

しかし、goto文自体には「指定した位置へ飛ぶ」という内容しか書かれておらず、どのような意図でそのような移動を行うのか、現在位置と飛び先はどのような関係にあるのかといった事情は周囲のコード(場合によってはプログラム全体)を注意深く観察しなければ分からない。

むやみに多用するとプログラムの見通しが悪くなり、制御の流れの把握が困難な「スパゲッティコード」状態になりやすい。高水準プログラミング言語にはif文for文while文switch文break文continue文など様々な構文が用意されており、極力これらを使うべきとされる。

ただし、深くネストした多重ループから一気に脱出したい場合や、エラー例外などを処理するコードなどでは、特定の位置に移動する方がシンプルなコードになることがあり、どのような場合でもgoto文を避けるべきなわけではないとする考え方もある。

(2023.2.5更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。