【发布时间】:2018-05-30 02:26:44
【问题描述】:
我是一名初级程序员,正在浏览一些 GitHub 存储库,并使用地图找到了这个简单的经典 fizzbuzz implementation。但是,当我运行它几次时,当isMultiple 对于3 和5 都是true 时,它会打印buzzfizz。例如,偶尔对于值15 或60,它可能会打印buzzfizz 而不是fizzbuzz,这对我来说似乎不一致并且让我很好奇修复它。有人可以解释为什么会发生这种情况以及我在这里缺少什么吗?它仅仅是一种语言行为还是可以改进代码以实现这种一致性?
package main
import (
"fmt"
)
func isMultiple(i,j int)bool {
return i%j==0
}
func main(){
fizzbuzz:=make(map[int]string)
fizzbuzz[3]="fizz"
fizzbuzz[5]="buzz"
for i:=1; i<101; i++ {
str:=""
for k,v:=range fizzbuzz{
if isMultiple(i,k)==true{str+=v}
}
fmt.Println(i,":",str)
}
}
编辑:决定将代码放在这里,以查看通用约定,最好放在这里。
【问题讨论】:
-
不看代码谁也解释不了。
-
地图是无序的数据结构,所以它们的迭代顺序是不确定的。
-
不是关于你的问题,而是风格上“isMultiple(i,k)==true”应该改写为“isMultiple(i,k)”