当前位置: 首页 > 面试题库 >

如何在范围循环中添加到地图

耿敏达
2023-03-14
问题内容
package main

import (
    "fmt"
)

func main() {
    m := make(map[int]int, 4)
    m[1] = 0
    m[2] = 0
    for k, _ := range m {
        i := 10 + k
        m[i] = 0
    }
    fmt.Println(m)
    fmt.Println("len:", len(m))
}

这段代码返回:8或10或6作为循环后映射的长度。视频在这里, 游戏
在这里。

我看到新添加的元素进入范围,但无法解释为什么此循环随机停止吗?


问题答案:

规格:对于声明:

未指定地图的迭代顺序,并且不能保证每次迭代之间都相同。如果在迭代过程中删除了尚未到达的映射条目,则不会生成相应的迭代值。
如果在迭代过程中创建了映射条目,则该条目可能在迭代过程中产生或可以被跳过。
对于创建的每个条目以及从一个迭代到下一个迭代,选择可能有所不同。如果映射为nil,则迭代次数为0。

规范指出,如果您在地图上添加条目,则循环可能会或可能不会访问您添加的元素,此外,被访问的元素甚至不确定,也无法确定(再次执行时可能会更改)。



 类似资料:
  • 我在mysql数据库中有一个数组数据,我想在使用Ajax得到结果后,用for循环逐个显示出来。过程是这样的。 这是将呈现每个项的段落 null 当我尝试使用for循环时,它会说语法错误,意外的for循环被取走,我该如何解决这个问题,例如,这里我使用sample for循环来使事情尽可能简单。

  • 问题内容: 我想在循环内添加延迟/睡眠: 我这样尝试过: 只有第一种情况是正确的:显示后,它将等待3秒钟,然后显示,但随后将不断重复。 我想要的是在显示3秒之后显示出来,然后它需要第二次等待3秒,依此类推。 问题答案: 该函数是非阻塞的,将立即返回。因此,您的循环将非常快速地迭代,并且将快速连续地发起3秒超时触发。这就是为什么您的第一个警报会在3秒钟后弹出,而其余所有警报都将连续不断地出现。 您可

  • 问题内容: 在Java中,循环的主体和循环条件不属于同一范围。因此,以下代码将无法编译: 但是这段代码对我来说确实有意义。 另外,如果身体和身体状况都在同一范围内,我将找不到任何陷阱。由于主体将始终被执行,而Java则不会,我不知道如何跳过最外层主体范围中的变量声明。即使有可能,编译器始终可以检测到这种可能性,然后产生编译时错误。 是否有这种现象的原因(除了将循环的格式保持为与相同)?我真的很好奇

  • 为了完成这项任务,我花了几周时间试图从其他建议中拼凑出一个完整的VBA,但现在我要向大家寻求答案。我试图从ws2中的a:K列中复制一个范围,该行以值c开头,该值与ws1中的值I匹配,该行以ws1中的值I开头。正在复制的条件是1和0。它基本上是一个美化的循环v形查找,粘贴动态范围。 我弄清楚了循环机制,现在我只需要帮助编写代码来复制选定的单元格。 这是我到目前为止所拥有的:

  • 问题内容: 我正在寻找一种确定范围的方法 。 Golang规范指出以下内容: 未指定地图的迭代顺序,并且不能保证每次迭代之间都相同。如果在迭代过程中删除尚未到达的映射条目,则不会生成相应的迭代值。如果映射条目是在迭代过程中创建的,则该条目可能在迭代过程中产生或可以被跳过。对于创建的每个条目以及从一个迭代到下一个迭代,选择可能有所不同。如果映射为nil,则迭代次数为0。 我在StackOverflo