编写 FizzBuzz 程序
首先,编写一个用于输出数字(1 到 100)的程序,其中有以下变化:
如果数字可被 3 整除,则输出 Fizz。
如果数字可被 5 整除,则输出 Buzz。
如果数字可同时被 3 和 5 整除,则输出 FizzBuzz。
如果前面的情况都不符合,则输出该数字。
尝试使用 switch 语句。
错误的例子
go
package main
import (
"fmt"
)
func main() {
for i := 1 , i <= 20 ; i++ {
switch i {
case i%3==0 && i%5==0:
fmt.Println("FizzBuzz")
case i%3==0:
fmt.Println("Fizz")
case i%5==0:
fmt.Println("Buzz")
default:
fmt.Println(i)
}
}
}
报错
.\hello.go:9:26: syntax error: cannot use i++ as value
.\hello.go:9:29: syntax error: unexpected {, expected semicolon or newline
.\hello.go:10:3: syntax error: unexpected switch, expected expression
.\hello.go:10:3: syntax error: unexpected switch, expected { after for clause
把i := 1 ,
改为i := 1;
go
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 20 ; i++ {
switch i {
case i%3==0 && i%5==0:
fmt.Println("FizzBuzz")
case i%3==0:
fmt.Println("Fizz")
case i%5==0:
fmt.Println("Buzz")
default:
fmt.Println(i)
}
}
}
.\hello.go:11:8: cannot convert i % 3 == 0 && i % 5 == 0 (untyped bool value) to type int
.\hello.go:13:8: cannot convert i % 3 == 0 (untyped bool value) to type int
.\hello.go:15:8: cannot convert i % 5 == 0 (untyped bool value) to type int
把switch后面的i去掉,可参考switch省略条件
go
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 20 ; i++ {
switch {
case i%3==0 && i%5==0:
fmt.Println("FizzBuzz")
case i%3==0:
fmt.Println("Fizz")
case i%5==0:
fmt.Println("Buzz")
default:
fmt.Println(i)
}
}
}
输出
go
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz