我是一个初学者程序员,正在浏览一些 GitHub 存储库,并使用地图找到了这个简单的经典fizzbuzz
实现。但是,当我运行它几次时,它会打印buzzfizz
当isMultiple
true
3
和5
时。例如,偶尔对于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)
}
}
编辑:决定将代码放在这里,看到通用约定在这里更好。
Go 映射是无序的数据结构,你不应该依赖键的排序。
为了防止开发者意外依赖小地图排序,Go 每次都会随机化小地图。
请在 Go 中的地图上阅读。