【发布时间】:2015-10-06 09:34:12
【问题描述】:
我使用了一个映射,它使用句子中的单词作为键,整数作为值。
func WordCount(s string) map[string]int {
var m map[string]int
m = make(map[string]int)
var substrings[]string
count := 0
substrings = strings.Split(s, " ")
for i := range substrings {
count = count + 1
m[substrings[i]] = count
}
return m
}
func main() {
fmt.Println(WordCount("I am learning GO since some days"))
}
上面的代码ALWAYS以正确的顺序显示地图,即
map[I:1 am:2 learning:3 GO:4 since:5 some:6 days:7]
但如果我改变了
count = count + 1
到
count++
输出变为:
map[learning:3 GO:4 since:5 some:6 days:7 I:1 am:2]
我知道地图迭代在 Golang 中是随机的,但为什么 count = count + 1 总是导致地图迭代以与 count++ 相反的有序方式返回?
【问题讨论】:
-
您是否有机会在 Go Playground 上对其进行测试?如果是这样,则缓存 Playground 上的输出!
-
我不是在谈论代码的来源,而是在谈论你在哪里运行/测试它。
-
我在 golang tour 上跑过
标签: dictionary go hashmap