我有一個地圖,它有一個鍵和該鍵的多個值。
我想要做的是從值中洗掉一個值。
例子:
map1 := make(map[string][]string)
str1 := []string{"Jon", "Doe", "Captain", "America"}
str2 := "Doe"
map1["p1"] = str1
在上面的例子中,如果它存在于 str2 中,我想從“p1”中洗掉值,在我的例子中它是“Doe”
洗掉值映射后應該是這樣的
p1:[Jon Captain America]
這是可能的還是我必須再次重寫整個地圖?
uj5u.com熱心網友回復:
從地圖內的切片中“就地”洗掉元素是不可能的。您需要首先從地圖中獲取切片,從切片中洗掉元素,然后將結果存盤在地圖中。
要通過其值查找元素的索引,然后從切片中洗掉它,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
uj5u.com熱心網友回復:
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");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450161.html
標籤:走
上一篇:在Go中遞回迭代結構陣列
