Adi*_*ghi 3 dictionary hashmap go
我使用了一个地图,它使用句子中的单词作为键,整数作为值.
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"))
}
Run Code Online (Sandbox Code Playgroud)
以上代码始终以正确的顺序显示地图,即
map[I:1 am:2 learning:3 GO:4 since:5 some:6 days:7]
Run Code Online (Sandbox Code Playgroud)
但如果我改变
count = count + 1
Run Code Online (Sandbox Code Playgroud)
至
count++
Run Code Online (Sandbox Code Playgroud)
输出更改为:
map[learning:3 GO:4 since:5 some:6 days:7 I:1 am:2]
Run Code Online (Sandbox Code Playgroud)
我知道地图迭代在Golang中是随机的,但为什么count = count + 1总是导致地图迭代以有序的方式返回count++?
icz*_*cza 15
如何更改变量值的方式count与map元素的迭代顺序无关.
没有"正确的"迭代顺序,迭代顺序可以被认为是随机的(并且在当前实现中它是随机的).引用语言规范:语句:
未指定地图上的迭代顺序,并且不保证从一次迭代到下一次迭代是相同的.
有关该主题的更多信息,请查看以下答案:为什么Go不能按插入顺序迭代地图?
Go Tour使用Go Playground提供代码编辑器和跑步者.Go Playground缓存您在其上运行的代码的输出.运行两次完全相同的代码只会显示缓存的输出.
但是,如果您更改了代码,那么它将被"视为"新代码,它将被编译并运行(并且其输出将在之后缓存).并且由于它重新运行,您可能会观察到一个新的随机顺序 - 您可以执行此操作.
如果您再次更改代码中的某些内容,即使与添加或更改某些注释无关紧要,输出也会(可能)再次更改,请尝试.
有关如何实施Playground的更多信息,请参阅博客文章Inside the Go Playground.
引用相关部分:
当前端收到编译请求时,它首先检查memcache以查看它是否已缓存该源的先前编译的结果.如果找到,则返回缓存的响应.高速缓存阻止流行程序(例如Go主页上的程序)使后端过载.如果没有缓存响应,则前端向后端发出RPC请求,将响应存储在memcache中,解析回放事件,并将JSON对象作为HTTP响应返回给客户端(如上所述).
| 归档时间: |
|
| 查看次数: |
649 次 |
| 最近记录: |