跳转到指定的标签继续执行, 直到遇到 Return.
Gosub, Label
跳转的目标标签, 热键标签或热字串标签, 这样会执行 Label 下的命令, 直到遇到 Return 或 Exit. Return 会让脚本返回到 Gosub 后的首个命令恢复执行. Exit 终止当前线程.
和几乎其他所有命令的参数一样, Label 可以为变量引用(例如 %MyLabel%), 此时将使用变量中的名称作为跳转的目标. 然而, 性能会稍微降低, 因为每次都必须 "查找" 目标标签名而不是只在脚本首次加载时查找一次.
使用类似 %MyLabel% 的动态标签时, 如果目标标签不存在则会显示错误对话框. 要避免此问题, 请预先调用 IsLabel(). 例如:
if IsLabel(VarContainingLabelName) Gosub %VarContainingLabelName%
尽管 Gosub 可用于简单, 普通用途的子程序, 不过对于更复杂的情况请考虑使用函数.
Return, 函数, IsLabel(), 区块, Loop, Goto, A_ThisLabel
Gosub, Label1 MsgBox, The Label1 subroutine has returned (it is finished). return Label1: MsgBox, The Label1 subroutine is now running. return