登录
首页 >  Golang >  Go问答

在范围循环内从地图中删除选定的键是否安全?

来源:Golang技术栈

时间:2023-04-11 15:54:11 297浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《在范围循环内从地图中删除选定的键是否安全?》,就坚持看下去吧!文中内容包含golang等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

如何从地图中删除选定的键?与范围结合是否安全delete(),如下面的代码所示?

package main

import "fmt"

type Info struct {
    value string
}

func main() {
    table := make(map[string]*Info)

    for i := 0; i %v\n", key, value.value)
        delete(table, key)
    }
}

https://play.golang.org/p/u1vufvEjSw

正确答案

这是安全的!您还可以在Effective Go中找到类似的示例:

for key := range m {
    if key.expired() {
        delete(m, key)
    }
}

语言规范

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

好了,本文到此结束,带大家了解了《在范围循环内从地图中删除选定的键是否安全?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>