Yo nunca las he usado, pero escarbando en el código fuente de Gambas a veces me las he encontrado por ahí. Por ejemplo en el código de Gridview... de hace algunas versiones. Creo que se actualizó y no sé si ahora mismo lo conserva, pero lo tenía.
Son un dolor de culo, que dicen los anglos, pero también son herramientas parte del lenguaje. Si hay quien los usa y le valen... pues bendito sea.
Saludos
Este el el resultado del comando "grep -R GO\ TO" en el raíz de los fuentes de gambas 3.18.2
gb.form.htmlview/src/gumbo/parser.c:// GOTOs in the spec to reasonably structured programming.
comp/src/gb.eval.highlight/sql/keywords:GOTO
comp/src/gb.web/.src/FileSessionManager.class: 'IF ReadValue() = 1 THEN GOTO _ABANDON
comp/src/gb.web/.hidden/Session_opt: 'IF ReadValue() = 1 THEN GOTO _ABANDON
app/src/gambas3-selftest/SearchList:GOTO
app/src/gambas3/.src/Editor/Form/FProperty.class~: 'IF NOT $hForm THEN RETURN 'GOTO _HIDE
app/src/gambas3/.src/Editor/Form/CControl.class: ' GOTO _SUIVANT
app/src/gambas3/.src/Editor/Form/CControl.class~: ' GOTO _SUIVANT
app/src/gambas3/.src/Editor/Form/FProperty.class: 'IF NOT $hForm THEN RETURN 'GOTO _HIDE
app/src/gambas3/.src/Editor/Code/FEditor.class: ' GOTO RETURN_FUNCTION
app/src/gambas3/.src/Editor/Code/FEditor.class: If aSymbols[iCpt - 1] == "GOTO" Or If aSymbols[iCpt - 1] == "GOSUB" Then
app/src/gambas3/.src/FMain.class: If Key.Control Then GoSub GOTO_TOP
app/src/gambas3/.src/FMain.class: If Key.Control Then GoSub GOTO_BOTTOM
app/src/gambas3/.src/FMain.class:GOTO_TOP:
app/src/gambas3/.src/FMain.class:GOTO_BOTTOM:
app/src/gambas3/.src/FMain.class~: If Key.Control Then GoSub GOTO_TOP
app/src/gambas3/.src/FMain.class~: If Key.Control Then GoSub GOTO_BOTTOM
app/src/gambas3/.src/FMain.class~:GOTO_TOP:
app/src/gambas3/.src/FMain.class~:GOTO_BOTTOM:
app/src/gambas3/.src/Util/MErrorMessage.modulerivate Const ERR_101 As String = ("Forbidden GOTO")
grep: app/src/gambas3/.gambas/MERRORMESSAGE: coincidencia en fichero binario
grep: app/src/gambas3/.gambas/FEDITOR: coincidencia en fichero binario
app/src/gambas3/.lang/ar.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/ca.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/ca.po:msgstr "GOTO prohibit"
grep: app/src/gambas3/.lang/zh_TW.mo: coincidencia en fichero binario
grep: app/src/gambas3/.lang/el.mo: coincidencia en fichero binario
grep: app/src/gambas3/.lang/ru.mo: coincidencia en fichero binario
app/src/gambas3/.lang/it.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/it.po:msgstr "Proibito GOTO"
app/src/gambas3/.lang/fr.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/fr.po:msgstr "GOTO interdit"
grep: app/src/gambas3/.lang/it.mo: coincidencia en fichero binario
app/src/gambas3/.lang/gl_ES.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/zh.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/zh.po:msgstr "禁止GOTO"
app/src/gambas3/.lang/id.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/hu.po:msgid "Forbidden GOTO"
grep: app/src/gambas3/.lang/nl.mo: coincidencia en fichero binario
app/src/gambas3/.lang/ru.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/ru.po:msgstr "GOTO запрещён"
app/src/gambas3/.lang/MErrorMessage.pot:msgid "Forbidden GOTO"
app/src/gambas3/.lang/sl.po:msgid "Forbidden GOTO"
grep: app/src/gambas3/.lang/ca.mo: coincidencia en fichero binario
grep: app/src/gambas3/.lang/sv.mo: coincidencia en fichero binario
app/src/gambas3/.lang/ko.po:msgid "Forbidden GOTO"
grep: app/src/gambas3/.lang/de.mo: coincidencia en fichero binario
app/src/gambas3/.lang/tr.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/es.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/es.po:msgstr "GOTO no permitido"
app/src/gambas3/.lang/hr.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/cs.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/cs.po:msgstr "Zakázané GOTO"
app/src/gambas3/.lang/el.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/el.po:msgstr "Απαγορευμένο GOTO"
app/src/gambas3/.lang/pt_BR.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/pt_BR.po:msgstr "GOTO proibido"
app/src/gambas3/.lang/pt.po:msgid "Forbidden GOTO"
grep: app/src/gambas3/.lang/es_ES.mo: coincidencia en fichero binario
app/src/gambas3/.lang/de.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/de.po:msgstr "Unzulässiges GOTO"
app/src/gambas3/.lang/sv.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/sv.po:msgstr "Förbjudet GOTO"
app/src/gambas3/.lang/lt.po:msgid "Forbidden GOTO"
grep: app/src/gambas3/.lang/es.mo: coincidencia en fichero binario
app/src/gambas3/.lang/.pot:msgid "Forbidden GOTO"
app/src/gambas3/.lang/nl.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/nl.po:msgstr "Verboden GOTO"
app/src/gambas3/.lang/cy.po:msgid "Forbidden GOTO"
grep: app/src/gambas3/.lang/fr.mo: coincidencia en fichero binario
grep: app/src/gambas3/.lang/cs.mo: coincidencia en fichero binario
grep: app/src/gambas3/.lang/pt_BR.mo: coincidencia en fichero binario
grep: app/src/gambas3/.lang/zh.mo: coincidencia en fichero binario
app/src/gambas3/.lang/pl.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/no.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/es_ES.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/es_ES.po:msgstr "GOTO no permitido"
app/src/gambas3/.lang/ro.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/zh_TW.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/zh_TW.po:msgstr "這裡不能使用 GOTO"
app/src/gambas3/.lang/ja.po:msgid "Forbidden GOTO"
app/src/gambas3/.lang/fa.po:msgid "Forbidden GOTO"
main/lib/jit/jit_body.c: /* 1F ON */ &&_ON_GOTO_GOSUB,
main/lib/jit/jit_body.c:_ON_GOTO_GOSUB:
main/lib/eval/eval_analyze.c: else if (old_type == RT_RESERVED && (PATTERN_is(get_last_pattern(pattern), RS_GOTO) || PATTERN_is(get_last_pattern(pattern), RS_GOSUB)))
main/lib/eval/eval_read.c: GOTO_BREAK,
main/lib/eval/eval_read.c: GOTO_SPACE,
main/lib/eval/eval_read.c: GOTO_NEWLINE,
main/lib/eval/eval_read.c: GOTO_COMMENT,
main/lib/eval/eval_read.c: GOTO_STRING,
main/lib/eval/eval_read.c: GOTO_IDENT,
main/lib/eval/eval_read.c: GOTO_QUOTED_IDENT,
main/lib/eval/eval_read.c: GOTO_ERROR,
main/lib/eval/eval_read.c: GOTO_SHARP,
main/lib/eval/eval_read.c: GOTO_NUMBER,
main/lib/eval/eval_read.c: GOTO_NUMBER_OR_OPERATOR,
main/lib/eval/eval_read.c: GOTO_OPERATOR
main/lib/eval/eval_read.c: first_car[i] = GOTO_BREAK;
main/lib/eval/eval_read.c: first_car[i] = GOTO_NEWLINE;
main/lib/eval/eval_read.c: first_car[i] = GOTO_SPACE;
main/lib/eval/eval_read.c: first_car[i] = GOTO_COMMENT;
main/lib/eval/eval_read.c: first_car[i] = GOTO_STRING;
main/lib/eval/eval_read.c: first_car[i] = GOTO_SHARP;
main/lib/eval/eval_read.c: first_car[i] = GOTO_IDENT;
main/lib/eval/eval_read.c: first_car[i] = GOTO_QUOTED_IDENT;
main/lib/eval/eval_read.c: first_car[i] = GOTO_NUMBER;
main/lib/eval/eval_read.c: first_car[i] = GOTO_ERROR;
main/lib/eval/eval_read.c: first_car[i] = GOTO_NUMBER_OR_OPERATOR;
main/lib/eval/eval_read.c: first_car[i] = GOTO_OPERATOR;
main/share/gbc_trans_common.h: TRANS_GOTO;
main/share/gb_reserved.h: RS_GOTO,
main/share/gbc_read_temp.h: else if (first_car[car] == GOTO_IDENT)
main/share/gb_type_common.h: TK_LABEL = 4, /* GOTO label */
main/gbc/gbc_trans_ctrl.c:/*#define DEBUG_GOTO*/
main/gbc/gbc_trans_ctrl.ctatic TRANS_GOTO *goto_info;
main/gbc/gbc_trans_ctrl.c: TRANS_GOTO *info;
main/gbc/gbc_trans_ctrl.c: #ifdef DEBUG_GOTO
main/gbc/gbc_trans_ctrl.c: else if (mode == RS_GOTO)
main/gbc/gbc_trans_ctrl.c: // Resolve GOTOs
main/gbc/gbc_trans_ctrl.c: THROW("Forbidden GOTO");
main/gbc/gbc_trans_ctrl.c: #ifdef DEBUG_GOTO
main/gbc/gbc_trans_ctrl.c: check_try("GOTO");
main/gbc/gbc_trans_ctrl.c: add_goto(index, RS_GOTO);
main/gbc/gbc_trans_ctrl.c: if (TRANS_is(RS_GOTO))
main/gbc/gbc_trans_ctrl.c: check_try(gosub ? "ON GOSUB" : "ON GOTO");
main/gbc/gbc_trans_ctrl.c: #ifdef DEBUG_GOTO
main/gbc/gbc_trans_code.c: { RS_GOTO, TRANS_goto },
main/gbc/gbc_read.c: GOTO_BREAK,
main/gbc/gbc_read.c: GOTO_SPACE,
main/gbc/gbc_read.c: GOTO_NEWLINE,
main/gbc/gbc_read.c: GOTO_COMMENT,
main/gbc/gbc_read.c: GOTO_STRING,
main/gbc/gbc_read.c: GOTO_IDENT,
main/gbc/gbc_read.c: GOTO_QUOTED_IDENT,
main/gbc/gbc_read.c: GOTO_ERROR,
main/gbc/gbc_read.c: GOTO_SHARP,
main/gbc/gbc_read.c: GOTO_NUMBER,
main/gbc/gbc_read.c: GOTO_NUMBER_OR_OPERATOR,
main/gbc/gbc_read.c: GOTO_OPERATOR
main/gbc/gbc_read.c: first_car[i] = GOTO_BREAK;
main/gbc/gbc_read.c: first_car[i] = GOTO_NEWLINE;
main/gbc/gbc_read.c: first_car[i] = GOTO_SPACE;
main/gbc/gbc_read.c: first_car[i] = GOTO_COMMENT;
main/gbc/gbc_read.c: first_car[i] = GOTO_STRING;
main/gbc/gbc_read.c: first_car[i] = GOTO_SHARP;
main/gbc/gbc_read.c: first_car[i] = GOTO_IDENT;
main/gbc/gbc_read.c: first_car[i] = GOTO_QUOTED_IDENT;
main/gbc/gbc_read.c: first_car[i] = GOTO_NUMBER;
main/gbc/gbc_read.c: first_car[i] = GOTO_ERROR;
main/gbc/gbc_read.c: first_car[i] = GOTO_NUMBER_OR_OPERATOR;
main/gbc/gbc_read.c: first_car[i] = GOTO_OPERATOR;
main/gbx/gbx_exec_loop.c: /* 1F ON */ &&_ON_GOTO_GOSUB,
main/gbx/gbx_exec_loop.c:_ON_GOTO_GOSUB:
gb.poppler/src/c_pdf_document.cpp: case POPPLER_ACTION_GOTO_DEST: type = "GotoDest"; break;
gb.poppler/src/c_pdf_document.cpp: case POPPLER_ACTION_GOTO_REMOTE: type = "GotoRemote"; break;
gb.poppler/src/c_pdf_document.cpp: case POPPLER_ACTION_GOTO_DEST: return action->goto_dest.dest;
gb.poppler/src/c_pdf_document.cpp: case POPPLER_ACTION_GOTO_REMOTE: return action->goto_remote.dest;
gb.poppler/src/c_pdf_document.cpp: case POPPLER_ACTION_GOTO_REMOTE: target = ACTION->goto_remote.file_name; break;
La mayoría de las coincidencias no son de código fuente de gambas, pero haberlas haylas.
O sea, que siguen vivitos y coleando...