goto文は、それ単体では働きを持たせることはできず、必ずラベルか何かによってジャンプ先が必要である。機械語における分岐命令の一種である無条件分岐と、アセンブリ言語のラベルをそのまま手続き型プログラミングに持ち込んだものと言え、何らかの条件分岐との組み合わせによって、ループであるとか、コードブロックの飛び越しであるとかいったような機能の一部となることができる。なお、冗談半分ではあるが、ジャンプ先のほうにcomefromという文を置き、ジャンプ元にラベルを置く、という「comefrom文」の提案もある。提案自体はジョークだが、同等の機能がある言語は実際にいくつかあり、プログラムの理論上の研究対象にもなっている。構文.次のように、ラベルの付いた文と併用する。clear:gotoclear;goto文によって、そこからclearラベルの付いた文にジャンプし、そこから処理を続ける。批判.しかし、多重にネストしたfor文やif文、while文などでエラー処理や例外処理などが複雑になる場合はgoto文を使った方がプログラムがすっきりと書けるケースもあるため、プログラムの構造を熟知したプログラマが状況に応じて使い分けるものとされている。BASICの様な言語や下位水準の制御言語ではgoto文は不可欠であり、goto文を利用しないと分岐やループを使ったプログラムが記述できないものもある。しかし、拡張されたBASICの中には、goto文がほとんど不必要になってしまっているものもある。前述のように、goto文の安易な使用はプログラムの可読性を著しく低下させる。こうした可読性の低いコードのことを、制御構造が複雑に絡まっているという意味を込めて、スパゲティコードと呼ぶことがある。goto文論争.ダイクストラの主張.「goto文有害説」は、ほとんどの場合、「構造化定理」()に結びつけて主張されたものだと信じられている。構造化定理は、そのようにして表現されたものが人間にわかりやすいか否かについては触れられていないにもかかわらず、「この理論に従えばgotoを除去できる」(これは正しい)、「ゆえにわかりやすいプログラムになる」(これは正しくない)というのが、「goto文有害説」であるとして信じられるようになったため、そういったような記述がしばしば見られる。