diff --git a/doc/docs.md b/doc/docs.md index 4b2f53f685..2c25996852 100644 --- a/doc/docs.md +++ b/doc/docs.md @@ -64,6 +64,7 @@ To do so, run the command `v up`. * [For loop](#for-loop) * [Match](#match) * [Defer](#defer) + * [Goto](#goto) * [Structs](#structs) * [Heap structs](#heap-structs) * [Default field values](#default-field-values) @@ -159,7 +160,6 @@ To do so, run the command `v up`. * [Cross-platform shell scripts in V](#cross-platform-shell-scripts-in-v) * [Vsh scripts with no extension](#vsh-scripts-with-no-extension) * [Attributes](#attributes) - * [Goto](#goto) * [Appendices](#appendices) * [Keywords](#appendix-i-keywords) * [Operators](#appendix-ii-operators) @@ -1954,6 +1954,30 @@ fn main() { } ``` +### Goto + +V allows unconditionally jumping to a label with `goto`. The label name must be contained +within the same function as the `goto` statement. A program may `goto` a label outside +or deeper than the current scope. `goto` allows jumping past variable initialization or +jumping back to code that accesses memory that has already been freed, so it requires +`unsafe`. + +```v ignore +if x { + // ... + if y { + unsafe { + goto my_label + } + } + // ... +} +my_label: +``` +`goto` should be avoided, particularly when `for` can be used instead. +[Labelled break/continue](#labelled-break--continue) can be used to break out of +a nested loop, and those do not risk violating memory-safety. + ## Structs ```v @@ -6249,30 +6273,6 @@ fn main() { } ``` -## Goto - -V allows unconditionally jumping to a label with `goto`. The label name must be contained -within the same function as the `goto` statement. A program may `goto` a label outside -or deeper than the current scope. `goto` allows jumping past variable initialization or -jumping back to code that accesses memory that has already been freed, so it requires -`unsafe`. - -```v ignore -if x { - // ... - if y { - unsafe { - goto my_label - } - } - // ... -} -my_label: -``` -`goto` should be avoided, particularly when `for` can be used instead. -[Labelled break/continue](#labelled-break--continue) can be used to break out of -a nested loop, and those do not risk violating memory-safety. - # Appendices ## Appendix I: Keywords