解決方案 - 控制流程練習

已完成

讓我們看看每個練習的可能解決方案。

撰寫 FizzBuzz 程式

使用 switch 陳述式的練習解決方案可能如下所示:

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))
    }
}

FizzBuzz 案例中,3 會乘以 5,因為結果是可由 3 和 5 整除的數字。 您也可以包含 AND 條件,以檢查數字可否由 3 和 5 整除。

尋找質數

若要尋找小於 20 的質數,練習的解決方案可能如下所示:

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)
        }
    }
}

main 函式中,我們會執行迴圈從 1 到 20,並呼叫 findprimes 函式來檢查目前的數字。 在 findprimes 函式中,我們會在 2 開始 for 迴圈,並重複直到計數器大於 number 值為止。 如果 number 可由計數器整除,則 number 不是質數。 如果我們在未結束的情況下完成迴圈,則數字會為 1 或為其質數。

輸出如下:

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

要求一個數字,如為負數,則出現緊急狀況

嘗試 panic 呼叫的練習解決方案可能如下所示:

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)
        }
    }
}

請記住,此練習旨在熟悉無限迴圈和 switch 陳述式。