3 回答
TA贡献1810条经验 获得超5个赞
很奇怪的是,
package main
func main () {
var sessions = map[string] chan int{};
delete(sessions, "moo");
}
似乎有效。不过,这似乎对资源的使用很差!
另一种方法是检查是否存在并使用值本身:
package main
func main () {
var sessions = map[string] chan int{};
sessions["moo"] = make (chan int);
_, ok := sessions["moo"];
if ok {
delete(sessions, "moo");
}
}
TA贡献1783条经验 获得超4个赞
从Go 1发行说明复制
在旧的语言中,k
要从所代表的地图中删除带有键的条目m
,请写下该语句,
m[k] = value, false
此语法是一种特殊的特殊情况,唯一的二对一分配。它要求传递一个被评估但被丢弃的值(通常被忽略),以及一个几乎总是常量false的布尔值。它完成了工作,但很奇怪,也是争论的焦点。
在Go 1中,语法已经消失了。而是有一个新的内置函数delete
。通话
delete(m, k)
将删除由表达式检索的地图条目m[k]
。没有返回值。删除不存在的条目是无操作。
更新:跑步go fix
会的形式表达转换m[k] = value, false
成delete(m, k)
时显然被忽略的值可以从程序被安全地丢弃,false
是指预定义的布尔常数。该修复工具将标记该语法的其他用途,以供程序员检查。
TA贡献1863条经验 获得超2个赞
从有效出发:
要删除地图条目,请使用delete内置函数,该函数的自变量是地图和要删除的键。即使地图上已经没有钥匙,也可以这样做。
delete(timeZone, "PDT") // Now on Standard Time
- 3 回答
- 0 关注
- 219 浏览
添加回答
举报