summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2021-03-14 18:12:04 -0400
committerGitHub <noreply@github.com>2021-03-14 18:12:04 -0400
commit5e29021a5eb10baa9147fd977cab82fa3f652bf0 (patch)
tree90a1981563a0e4e337c8180bf9f90fce4dfa08a5
parentbd2fa3c416ffe6107b500a2180fa1764645c0a61 (diff)
downloadcpython-git-5e29021a5eb10baa9147fd977cab82fa3f652bf0.tar.gz
bpo-43199: Briefly explain why no goto (GH-24852)
Answer "Why is there no goto?" in the Design and History FAQ.
-rw-r--r--Doc/faq/design.rst10
-rw-r--r--Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst1
2 files changed, 10 insertions, 1 deletions
diff --git a/Doc/faq/design.rst b/Doc/faq/design.rst
index 7fe1c6d58f..f1f54eff86 100644
--- a/Doc/faq/design.rst
+++ b/Doc/faq/design.rst
@@ -600,7 +600,15 @@ test cases at all.
Why is there no goto?
---------------------
-You can use exceptions to provide a "structured goto" that even works across
+In the 1970s people realized that unrestricted goto could lead
+to messy "sphagetti" code that was hard to understand and revise.
+In a high-level language, it is also unneeded as long as there
+are ways to branch (in Python, with ``if`` statements and ``or``,
+``and``, and ``if-else`` expressions) and loop (with ``while``
+and ``for`` statements, possibly containing ``continue`` and ``break``).
+
+One can also use exceptions to provide a "structured goto"
+that works even across
function calls. Many feel that exceptions can conveniently emulate all
reasonable uses of the "go" or "goto" constructs of C, Fortran, and other
languages. For example::
diff --git a/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst b/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst
new file mode 100644
index 0000000000..d1b454fabd
--- /dev/null
+++ b/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst
@@ -0,0 +1 @@
+Answer "Why is there no goto?" in the Design and History FAQ.