The most effective way to use it is not to =]

Seriously, goto, at its best, is only AS simple as loop/condition structures (do..while, while, for, if, switch) and is never simpler. It is never the best method for solving a problem and is almost always a problem.

Even using gotos which are exactly equivalent to a loop structure is not recommended because of scope. Variables declared in a loop have scope only within the loop -- not so with gotos. Further, the use of gotos negates some of the compiler's ability to generate warnings.

If you want to learn C++, you should pretend goto does not exist. Goto-style code, aka "spaghetti code", is hideously bad style. It is harder to read, harder to debug, and harder to write.

Goto is something you use only in languages where there IS nothing else. In C/C++, you don't need to learn how to use it -- you learn how NOT to use it!