Description
Goto ( goto , GOTO , GO TO , GoTo , or other case
combinations, depending on the programming language) is a statement found in
many computer programming languages. It performs a one-way transfer of
control to another line of code; in contrast a function call normally returns
control. The jumped-to locations are usually identified using labels, though
some languages use line numbers. At the machine code level, a goto is a form
of branch or jump statement, in some cases combined with a stack adjustment.
Many languages support the goto statement, and many do not (see § language
support).
The structured program theorem proved that the goto statement is not
necessary to write programs that can be expressed as flow charts; some
combination of the three programming constructs of sequence, selection/choice,
and repetition/iteration are sufficient for any computation that can be
performed by a Turing machine, with the caveat that code duplication and
additional variables may need to be introduced.
In the past there was considerable debate in academia and industry on the
merits of the use of goto statements. Use of goto was formerly common, but
since the advent of structured programming in the 1960s and 1970s its use has
declined significantly. The primary criticism is that code that uses goto
statements is harder to understand than alternative constructions. Goto
remains in use in certain common usage patterns, but alternatives are
generally used if available. Debates over its (more limited) uses continue in
academia and software industry circles.