2 回答
TA贡献1777条经验 获得超10个赞
不可能从地图内部的切片中“就地”删除元素。您需要先从地图中获取切片,从切片中删除元素,然后将结果存储在地图中。
要通过元素的值查找元素的索引,然后将其从切片中删除,golang.org/x/exp/slices如果您使用的是 Go1.18,则可以使用该包。
package main
import (
"fmt"
"golang.org/x/exp/slices"
)
func main() {
map1 := make(map[string][]string)
str1 := []string{"Jon", "Doe", "Captain", "America"}
str2 := "Doe"
map1["p1"] = str1
idx := slices.Index(map1["p1"], str2)
map1["p1"] = slices.Delete(map1["p1"], idx, idx+1)
fmt.Println(map1)
}
https://go.dev/play/p/EDTGAJT-VdM
TA贡献1806条经验 获得超8个赞
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");
}
}
- 2 回答
- 0 关注
- 117 浏览
添加回答
举报