---
name: "goto"
type: command
status: ok
groups: ["Program Flow"]
arma3_since: "0.50"
locality: {"argument": null, "effect": null, "server_exec": false}
source: https://community.bistudio.com/wiki/goto
revid: 364521
updated: 2024-05-16T20:46:23Z
---

# goto

*Command · Program Flow · Arma 3 v0.50 · introduced in Operation Flashpoint v1.00*

## Description

Break script flow and go to given label (defined by **#** - **NOT** to be confused with [SQF](../topics/SQF_Syntax.md)'s [hash sign](../commands/a_hash_b.md)!)

> [!WARNING]
> This command only works in SQS Syntax.

> [!NOTE]
> Note that labels are not case sensitive and are searched for from the top of the script, so multiple occurrences of a label will only result in the topmost one ever being found.

## Syntax

```sqf
goto label
```

**Parameters:**

- `label`: [String](../topics/String.md)

**Returns:** [Nothing](../topics/Nothing.md)

## Examples

### Example 1

```sqs
goto "myLabel"
player setDamage 1

#myLabel
hint "you successfully avoided death!"
```

## See also

[Control Structures](../topics/Control_Structures.md) · SQS to SQF conversion

## Community notes

**Hardrock** — 2006-08-04

*Notes from before the conversion:*

- This function works only inside of SQS script.
- The search for labels always begins at the top of the script so that if there are multiple occurrences of a label the first occurrence will always be the one found.
- Because of the searching order, it is faster to place loops which are executed often at the top of a script.
- Labels are not case sensitive.
- Loops which look something like the example below should be avoided as many of them could cause the mission to slow down:

```sqs
#wait
if (condition) then { goto "wait" }
```

It is better to use the **@** command to wait for a condition to be true, or put a small delay into the wait loop.

Example:
- While it is not required to include a delay in a loop, such a loop without a delay can cause the script to slow the game down, as the loop will be executed many times before the game engine interrupts the script.
- Unless you really want the loop to execute multiple times during a frame, you should include a small delay.
- You would need to have many scripts running for this to be a significant issue.
- Deciding whether to use a script with a loop or a trigger or even a **@** statement to detect a condition is a complicated matter and should be subject to experimentation.

---

**UNN** — 2006-08-04

A goto command called within a [forEach](../commands/forEach.md) loop will only execute a single jump to [goto](../commands/goto.md), once the [forEach](../commands/forEach.md) loop has finished:

```sqs
{ goto "wait" } forEach [0, 1, 2, 3, 4]
```

<sub>Source: [BI Community Wiki — goto](https://community.bistudio.com/wiki/goto) (revision 364521).</sub>
