1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

doc: move goto section under statements (#16179)

This commit is contained in:
kahsa 2022-10-24 18:09:14 +09:00 committed by GitHub
parent 701586fa84
commit 26c737b6db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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