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

时间:2017-12-15 20:56:57

标签: go fizzbuzz

我是初学程序员,正在浏览一些GitHub存储库,并使用地图找到了这个简单的经典fizzbuzz implementation。但是,当我运行它几次时,buzzfizz isMultiple true3 5 15。例如,对于值60buzzfizz,偶尔可能会打印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) } } ,这似乎与我不一致,让我很好奇修复它。有人可以解释为什么会发生这种情况以及我在这里缺少什么?它只是一种语言行为,还是可以为这种一致性改进代码?

const ObjectID = require('mongodb').ObjectId;

编辑:决定将代码放在这里,看看常见的约定,这里更好。

1 个答案:

答案 0 :(得分:1)

Go map是无序的数据结构,你不应该依赖于键的排序。

为了防止开发人员意外地依赖小地图排序,Go每次都会随机化小地图。

请在Go中的地图上read up