Use of goto Statement in Arduino

The goto statement in Arduino programming can transfer control to a specific label within the same program. This allows for the creation of loops and conditional statements that can simplify and streamline the code. However excess use of goto statements can lead to complex programs which will be difficult for debugging.

Use of goto Statement

One of the most common uses for the goto statement is in the creation of infinite loops. By using the goto statement in conjunction with a label, an Arduino programmer can create a loop that will run indefinitely.

A goto statement can also be used to create conditional statements. By using the goto statement in combination with an if statement, the programmer can create code that runs only when certain conditions are met. This allows for the creation of more dynamic and responsive systems, as the code can adapt to changing conditions in real-time.

Example Code

Here is an example code that demonstrates the use of the goto statement in Arduino:

int a = 0;
void setup() {  // put your setup code here, to run once:
label:    //label for return to this line of code
if (a<20)
goto label;    // returning to label
void loop() {   // put your main code here, to run repeatedly:

In this code, the goto statement is used to transfer control to the label when the counter reaches 20. The label is defined at the bottom of the code and is used to reset the counter to 0.

When this code is run on an Arduino board, it will print the values 0 to 20, and then reset the counter to 0. The goto statement allows for the creation of a loop that runs indefinitely, which can be useful in many applications:


Counting from 1 to 20 can be seen in the Arduino serial monitor:

Why goto Statement Is Discouraged in Arduino and C++ Programming

The goto statement is generally discouraged in Arduino and C++ programming because it can make code difficult to understand and maintain. When used excessively, the goto statement can lead to code that is complex and tangled, making it difficult to follow the flow of execution. This can make it challenging to troubleshoot and modify the code in the future.

Additionally, the goto statement complicates determining where code errors may occur. By breaking the sequential flow of execution, the goto statement can create unintended side effects that are difficult to identify and fix.

Another reason why the goto statement is discouraged is that it does not follow the principles of structured programming. It makes the code more readable and maintainable when loops and conditional statements are used in structured programming. The goto statement, on the other hand, can bypass these structures and make the code more difficult to understand.

Control structures can easily replace goto statements. These control structures include loops and conditional statements that can create more organized and readable code. These control structures allow for clear and sequential execution, making it easier to identify and troubleshoot errors, as well as making the code easier to modify and maintain in the future.


The goto statement should be used with caution, as overuse can lead to confusing and difficult to read code. By understanding when and how to use the goto statement, programmers can create efficient code for small projects and applications. However, overuse of goto statements in Arduino leads to difficulties in understanding and debugging the code.

About the author


I am an Electrical Engineer. I love to write about electronics. I am passionate about writing and sharing new ideas related to emerging technologies in the field of electronics.