删除地图中的键

新手上路,请多包涵

我有一张地图:

 var sessions =  map[string] chan int{}

如何删除 sessions[key] ?我试过了:

 sessions[key] = nil,false;

那没有用。

更新(2011 年 11 月):

Go 版本 1 中删除了删除映射条目的特殊语法:

Go 1 将删除特殊的地图分配并引入一个新的内置函数, delete : delete(m, x) 将删除由表达式检索的地图条目 m[x]

原文由 jonaz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 361
2 个回答

Go引入了一个 delete(map, key) 函数:

 package main

func main () {
    var sessions = map[string] chan int{};
    delete(sessions, "moo");
}

原文由 user181548 发布,翻译遵循 CC BY-SA 4.0 许可协议

从 Go 1 发行说明 复制

在旧语言中,要从 m 表示的映射中删除键为 k 的条目,写了这样的语句,

 m[k] = value, false

这种语法是一种奇特的特例,是唯一的二对一赋值。它需要传递一个被评估但被丢弃的值(通常被忽略),加上一个几乎总是常量 false 的布尔值。它完成了工作,但很奇怪并且是争论的焦点。

在 Go 1 中,该语法已经消失;相反,有一个新的内置函数 delete 。电话

delete(m, k)

将删除由表达式 m[k] 检索到的映射条目。没有返回值。删除不存在的条目是空操作。

更新: 运行 go fix 会将形式为 m[k] = value, false 的表达式转换为 false delete(m, k) 当很明显可以从程序中安全地忽略值时 --- 指预定义的布尔常量。修复工具将标记语法的其他用途以供程序员检查。

原文由 hannson 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题