解决方案 - 控制流练习
我们来看看每个练习的可能的解决方案。
编写 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
语句。