Oplossingen - Oefeningen voor controlestromen

Voltooid

Laten we eens kijken naar mogelijke oplossingen voor elk van de oefeningen.

Een FizzBuzz-programma schrijven

Een oplossing voor het gebruik van de switch instructie kan er ongeveer als volgt uitzien:

package main

import (
    "fmt"
    "strconv"
)

func fizzbuzz(num int) string {
    switch {
    case num%15 == 0:
        return "FizzBuzz"
    case num%3 == 0:
        return "Fizz"
    case num%5 == 0:
        return "Buzz"
    }
    return strconv.Itoa(num)
}

func main() {
    for num := 1; num <= 100; num++ {
        fmt.Println(fizzbuzz(num))
    }
}

Voor het FizzBuzz geval vermenigvuldigt u 3 met 5 omdat de resultaten deelbaar zijn met 3 en 5. U kunt ook een AND voorwaarde opnemen om te controleren of een getal deelbaar is door 3 en 5.

De priemgetallen zoeken

Een oplossing voor de oefening om de priemgetallen kleiner dan 20 te vinden, kan er ongeveer als volgt uitzien:

package main

import "fmt"

func findprimes(number int) bool {	
	for i := 2; i < number; i++ {
        if number % i == 0 {
			return false
        }
    }

	if number > 1 {
		return true
	} else {
	    return false
	}	
}

func main() {
    fmt.Println("Prime numbers less than 20:")
	
    for number := 1; number <= 20; number++ {
        if findprimes(number) {
            fmt.Printf("%v ", number)
        }
    }
}

In de main functie herhalen we van 1 tot 20 en roepen we de findprimes functie aan om het huidige nummer te controleren. In de findprimes functie starten we de for lus bij 2 en herhalen we totdat de teller meer is dan de number waarde. Als de number teller gelijkmatig deelbaar is, is het number niet priem. Als we de lus voltooien zonder af te sluiten, is het getal 1 of het is priem.

Dit is de uitvoer:

Prime numbers less than 20:
2 3 5 7 11 13 17 19 

Vraag een getal, paniek als negatief

De oplossing voor de oefening om een panic oproep uit te voeren, kan er ongeveer als volgt uitzien:

package main

import "fmt"

func main() {
    val := 0

    for {
        fmt.Print("Enter number: ")
        fmt.Scanf("%d", &val)

        switch {
        case val < 0:
            panic("You entered a negative number!")
        case val == 0:
            fmt.Println("0 is neither negative nor positive")
        default:
            fmt.Println("You entered:", val)
        }
    }
}

Het idee is om een oneindige lus en een switch instructie te oefenen.