Почему goto зло?
Потому что не зло, просто "красивая" легенда.
Goto тупо меняет направление выполнения программы, причем метка перехода может быть где угодно и проследить логику очень трудно. В то время как существует масса операторов (циклы, условия, ветвления) логика работы которых доступна пониманию.