Welcome to our exploration of the combination of Go's for
loop structures and conditional statements. By merging these elements together, your loops will become supercharged, enabling them to perform flexible and dynamic actions based on different conditions.
Before we forge ahead, it's essential to revisit the foundation: loops in Go. Go provides a highly versatile for
loop. It's used not only for iterating over arrays, slices, and maps but also for emulating a while
loop.
A for
loop in Go iterates a predetermined number of times, much like a reliable spaceship following a set route:
Go1for i := 0; i < 5; i++ { // Iterates five times 2 fmt.Println(i) // Prints 0 to 4 3}
To act like a while
loop, our for
loop eliminates the initialization and increment portions:
Go1i := 0 2for i < 5 { // Condition for the loop to continue 3 fmt.Println(i) // Prints 0 to 4 4 i++ // Increment the counter 5}
Now, let's revisit the if-else
construct, which is Go's means for making decisions.
Go1asteroidsDistance := 10 2 3if asteroidsDistance > 15 { 4 fmt.Println("Navigate through the asteroids.") 5} else { 6 fmt.Println("Steer clear of the asteroids.") 7}
The if-else
statement enables the spaceship to decide whether to navigate through the asteroids based on their distance.
Next, let's consider how the for
loop integrates with an if-else
statement:
Go1for i := 0; i < 6; i++ { 2 if i % 2 == 0 { 3 fmt.Println(i, "is even.") // prints for 0, 2, and 4 4 } else { 5 fmt.Println(i, "is odd.") // prints for 1, 3, and 5 6 } 7}
Similarly, we can use an if-else
statement within a for
loop, which emulates a while
loop:
Go1i := 0 2for i < 7 { 3 if i % 3 == 0 { 4 fmt.Println(i, "is divisible by 3.") // will print for 0, 3, 6 5 } else { 6 fmt.Println(i, "is not divisible by 3.") // will print for 1, 2, 4, 5 7 } 8 i++ 9}
Consider an application designed to monitor oxygen levels across a network of stations. These stations are critical for ensuring the safety and well-being of personnel in a space habitat. The following example demonstrates how we can iterate through an array of oxygen sensor readings and apply conditional logic to alert us to potential dangers.
Go1oxygenReadings := []float64{21.5, 20.9, 19.2, 18.0, 22.1} // Oxygen levels of different stations 2safeOxygenLevel := 19.5 // Minimum safe level in percentage 3 4for i, reading := range oxygenReadings { 5 if reading < safeOxygenLevel { 6 fmt.Printf("Warning! Low oxygen level at Station %d. \n", i+1) 7 // will print for stations 3 and 4 8 } else { 9 fmt.Printf("Station %d oxygen level is safe.\n", i+1) 10 // will print for stations 1, 2 and 5 11 } 12}
In this code, oxygenReadings
holds the oxygen percentages reported by sensors at each station. By looping through these readings, we can identify any station with an oxygen level below the designated safe threshold (safeOxygenLevel
). The loop then prints a customized message for each station, using a conditional statement to determine whether the situation is safe or requires an alert.
In another scenario, consider a game. As long as the game is on—represented by a for
loop—if you hit an alien, represented as an if
condition, you gain points!
For random generation of successful/unsuccessful hit, we will need to import "math/rand"
:
Go1import ( 2 "fmt" 3 "math/rand" 4)
Go1score := 0 2gameOn := true 3 4for gameOn { 5 isAlienHit := rand.Intn(2) // Random generator for hit (1) or miss (0) 6 7 if isAlienHit == 1 { 8 fmt.Println("Alien vessel hit! +10 points") 9 score += 10 10 } else { 11 fmt.Println("Missed! Game Over.") 12 gameOn = false 13 } 14} 15fmt.Println("Your score is", score) // Displays the final score when the game ends.
You've now learned how to effectively combine Go's for
loops and if-else
statements. Prepare yourself for some engaging practice to further solidify these exciting programming skills! You're well on your way to tackling more complex problems in Go. Embark on a fulfilling journey!