Go, End to End
Control Flow
Go keeps control flow deliberately small: one conditional form, one switch form, and exactly one loop keyword that covers every looping pattern other languages split across for/while/do-while.
if / else
No parentheses around the condition, and the braces are mandatory even for a single statement. An if can also include a short initialization statement before the condition, scoped to the if/else chain, which is the idiomatic way to check an error right where it's produced.
switch
Go's switch doesn't fall through by default, each case implicitly breaks after its body. That's the opposite of C/C++/Java, and it removes an entire category of forgotten-break bugs. If you genuinely want fallthrough behavior, the fallthrough keyword asks for it explicitly on a per-case basis.
A switch with no expression at all works as a cleaner alternative to a long if/else if chain, each case is just a boolean condition.
for: Go's only loop
There's no while and no do-while. for covers all of it, in four shapes.
Labeled break and continue
Nested loops sometimes need to break or continue an outer loop specifically, not just the innermost one. Go supports this with labels, which look unusual at first but solve a real problem cleanly (the alternative in languages without labels is usually a boolean flag variable checked in every nested loop, which is worse).
Try it yourself: change continue outer to break outer in the example above and predict the output before running it.