Avoiding "goto" means avoiding unstructured design (i.e. using only only closed structures - one start, one end, any other context signalled by other means than programme flow).
Exiting a control loop prematurely is not a case of a goto - it's still a case of one start, one end. It just avoids a layer of indenting and promotes readability.
Things like jump tables are not lists of gotos - they're a list of (derefenced, if you insist) function pointers.
Summary: avoiding goto as a design concept is a Good Thing. Avoiding gotos as a means of implementing good structure is simply misunderstanding the point. I've seen (possibly on this ng) someone defending goto on the basis that CPUs only know about branches and jumps anyway. Follocks.
It's *not* about implementation. It's about design. If you use gotos to implement an IF THEN ELSE ENDIF structure, I could care less. It's still structured.
Bottom line: uncontrolled program flow is a Bad Thing. If you can't look at a chunk of code and know the answer to the question "How did I get here?" - warning!
Steve (another 2c poorer)