此 Golang 程序中地图范围内的顺序行为



我是一个初学者程序员,正在浏览一些 GitHub 存储库,并使用地图找到了这个简单的经典fizzbuzz实现。但是,当我运行它几次时,它会打印buzzfizzisMultipletrue35时。例如,偶尔对于1560的值,它可能会打印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 中的地图上阅读。

相关内容

  • 没有找到相关文章

最新更新