Так, вам точно щось не вистачає . Готос зазвичай використовувався, як ви сказали, для здійснення однобічної передачі управління.
Однак події цього не роблять. Коли код запускає подію, він добре знає, що після події буде опубліковано (або оброблено, у черзі, запустито ... тощо) виконання коду відновиться в наступному рядку в коді, який генерував подію.
Використання goto створює дуже тісний зв'язок між кодом, який викликає цей вислів, і кодом, що знаходиться на кінці прийому. Розробник повинен мати глибокі знання про обидва місця, щоб використовувати goto.
З іншого боку, код, який викликає події, зазвичай не знає і не цікавить, хто зацікавлений слухати цю подію. Тут міг бути слухач. Або може бути 100 слухачів, або 0. Ці слухачі можуть бути в тій же програмі, де розгорнута подія, або вони можуть бути в зовсім іншій програмі, або вони можуть бути на іншій машині. Що стосується видавця, як тільки він генерує подію, його робота виконана.
Якщо ви зараз зі мною, то, що я описав вище, ідеальний випадок паб / підрозділу. На жаль, у реальному світі речі не завжди ідеальні, і бувають випадки, коли видавці генерують подію, абонент отримує виклик, змінює цілу купу штатів і до моменту виконання коду повертається назад до видавця, "видається, що світ" були перевернуті догори дном. І я впевнений, що раніше ви стикалися з цим, оскільки ця умова часто виникає, коли шаблон pub / sub реалізується дуже просто (наприклад, за допомогою використання делегатів або подій у C # або покажчиків функцій / інтерфейсів у C / C ++).
Але ця проблема не обов'язково має шаблон паб / під, а скоріше її реалізацію. Ось чому багато систем покладаються на черги, так що коли опублікована подія, її просто в черзі викликати пізніше, що дає видавцеві можливість закінчити виконання, поки світ ще недоторканий. Коли видавець зробить це своєю роботою, цикл подій (він же цикл відправлення) спливе події та викликатиме передплатників.
return
,try/catch
,break
,continue
,switch
- ті всіgoto
з різними рівнями обмеження , побудованого в Гото вважається шкідливим шкідливо думати про те , як працює код ..