This blog post compares the clarity of a number of programs written with goto vs. with other control flow methods: https://blog.joren.ga/gotophobia-harmful

Knuth’s “Structured Programming with go to Statements” argues that we eventually missed the main point of structured programming by focusing too much on goto. https://pic.plover.com/knuth-GOTO.pdf

Error handling (especially in loops or when releasing resources in non-RAII languages) and implementing state machines are commonly brought up as cases where goto is more fitting than common “structured” control flow statements. I think some newer languages like Zig extend the “break” mechanism to let you break to a label, so that sort of covers the first case.

Josh