diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2021-03-14 18:12:04 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-14 18:12:04 -0400 |
commit | 5e29021a5eb10baa9147fd977cab82fa3f652bf0 (patch) | |
tree | 90a1981563a0e4e337c8180bf9f90fce4dfa08a5 | |
parent | bd2fa3c416ffe6107b500a2180fa1764645c0a61 (diff) | |
download | cpython-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.rst | 10 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst | 1 |
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. |