Go语言编写FizzBuzz逻辑代码运行持续报错问题咨询
Go 版FizzBuzz代码运行报错排查
错误原因
原代码存在2个会直接导致编译失败的语法错误,以及1个格式问题:
for循环缺少强制要求的代码块大括号。Go 语法不允许省略循环、分支语句的大括号,原代码for i:= 1; i<= 100; i++后直接接switch语句,没有用{}包裹循环逻辑,会直接触发语法报错。switch结构写法不匹配。原代码使用switch i {的带表达式写法,该写法要求所有case后必须是和i类型一致的整数值,但实际case后写的是i%15 ==0这类布尔判断表达式,类型不匹配无法编译。- 代码缩进混乱、
default关键字旁多了无意义空格,不符合Go官方编码规范,虽然不直接导致报错,但会影响可读性。
修正方案
- 给
for循环补全大括号,将后续switch逻辑包裹在循环体范围内 - 将带表达式的
switch i改为无表达式的switch结构,该结构下case后可直接写布尔判断逻辑,匹配首个返回true的分支执行,适配原有判断逻辑 - 统一调整代码缩进,修正格式问题
修正后可运行代码
package main import "fmt" func main() { for i := 1; i <= 100; i++ { switch { case i%15 == 0: fmt.Println("FizzBuzz") case i%3 == 0: fmt.Println("Fizz") case i%5 == 0: fmt.Println("Buzz") default: fmt.Println(i) } } }
注:原代码中拼写为
FizzyBuzz,上述代码调整为FizzBuzz题目标准拼写,如果你需要保留原有拼写,直接修改对应字符串内容即可,不影响代码运行。
内容的提问来源于stack exchange,提问作者Abdulwaarith
相关产品推荐
相关产品推荐

