Control structures are fundamental in programming as they allow you to control the flow of execution in your programs. In Go, the primary control structures include conditionals, loops, and switch statements. This section will cover these concepts in detail, providing examples and exercises to help you understand and apply them effectively.

  1. Conditionals

if Statement

The if statement is used to execute a block of code only if a specified condition is true.

Syntax:

if condition {
    // code to be executed if condition is true
}

Example:

package main

import "fmt"

func main() {
    age := 20
    if age >= 18 {
        fmt.Println("You are an adult.")
    }
}

if-else Statement

The if-else statement provides an alternative block of code to execute if the condition is false.

Syntax:

if condition {
    // code to be executed if condition is true
} else {
    // code to be executed if condition is false
}

Example:

package main

import "fmt"

func main() {
    age := 16
    if age >= 18 {
        fmt.Println("You are an adult.")
    } else {
        fmt.Println("You are a minor.")
    }
}

if-else if-else Statement

The if-else if-else statement allows you to test multiple conditions.

Syntax:

if condition1 {
    // code to be executed if condition1 is true
} else if condition2 {
    // code to be executed if condition2 is true
} else {
    // code to be executed if both conditions are false
}

Example:

package main

import "fmt"

func main() {
    score := 85
    if score >= 90 {
        fmt.Println("Grade: A")
    } else if score >= 80 {
        fmt.Println("Grade: B")
    } else if score >= 70 {
        fmt.Println("Grade: C")
    } else {
        fmt.Println("Grade: F")
    }
}

  1. Loops

for Loop

The for loop is the only loop construct in Go, but it can be used in various ways.

Basic for Loop Syntax:

for initialization; condition; post {
    // code to be executed
}

Example:

package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
}

while-like for Loop

Go's for loop can also be used as a while loop.

Syntax:

for condition {
    // code to be executed
}

Example:

package main

import "fmt"

func main() {
    i := 0
    for i < 5 {
        fmt.Println(i)
        i++
    }
}

Infinite Loop

An infinite loop can be created using for without any conditions.

Syntax:

for {
    // code to be executed
}

Example:

package main

import "fmt"

func main() {
    for {
        fmt.Println("Infinite loop")
        break // Use break to exit the loop
    }
}

  1. Switch Statement

The switch statement is used to select one of many code blocks to be executed.

Syntax:

switch expression {
case value1:
    // code to be executed if expression == value1
case value2:
    // code to be executed if expression == value2
default:
    // code to be executed if expression doesn't match any case
}

Example:

package main

import "fmt"

func main() {
    day := "Tuesday"
    switch day {
    case "Monday":
        fmt.Println("Start of the work week.")
    case "Tuesday":
        fmt.Println("Second day of the work week.")
    case "Wednesday":
        fmt.Println("Midweek.")
    case "Thursday":
        fmt.Println("Almost the weekend.")
    case "Friday":
        fmt.Println("Last work day of the week.")
    default:
        fmt.Println("Weekend!")
    }
}

Practical Exercises

Exercise 1: Even or Odd

Write a program that checks if a number is even or odd.

Solution:

package main

import "fmt"

func main() {
    number := 10
    if number%2 == 0 {
        fmt.Println("Even")
    } else {
        fmt.Println("Odd")
    }
}

Exercise 2: FizzBuzz

Write a program that prints the numbers from 1 to 20. For multiples of three, print "Fizz" instead of the number, and for multiples of five, print "Buzz". For numbers that are multiples of both three and five, print "FizzBuzz".

Solution:

package main

import "fmt"

func main() {
    for i := 1; i <= 20; i++ {
        if i%3 == 0 && i%5 == 0 {
            fmt.Println("FizzBuzz")
        } else if i%3 == 0 {
            fmt.Println("Fizz")
        } else if i%5 == 0 {
            fmt.Println("Buzz")
        } else {
            fmt.Println(i)
        }
    }
}

Exercise 3: Grade Calculator

Write a program that takes a score as input and prints the corresponding grade using a switch statement.

Solution:

package main

import "fmt"

func main() {
    score := 85
    var grade string

    switch {
    case score >= 90:
        grade = "A"
    case score >= 80:
        grade = "B"
    case score >= 70:
        grade = "C"
    case score >= 60:
        grade = "D"
    default:
        grade = "F"
    }

    fmt.Println("Grade:", grade)
}

Summary

In this section, we covered the essential control structures in Go, including conditionals (if, if-else, if-else if-else), loops (for), and switch statements. These constructs allow you to control the flow of your program based on conditions and repetitive tasks. By practicing the provided exercises, you should now have a solid understanding of how to use these control structures in your Go programs. In the next section, we will delve into functions, which are crucial for organizing and reusing code.

© Copyright 2024. All rights reserved