gpt4 book ai didi

go - 检查 map 在 Go 中是否有重复值

转载 作者:IT王子 更新时间:2023-10-29 01:50:34 26 4
gpt4 key购买 nike

考虑下面的 map

mymap := make(map[string]string)
mymap["a"] = "one"
mymap["b"] = "two"
mymap["c"] = "one"

如何判断值是否唯一?

一种策略是遍历映射,创建值的 slice 。然后遍历 slice 以查找重复项。有没有更好的办法?

最佳答案

如果您只需要判断是否存在重复项的真/假,而不需要知道哪些值是重复项或有多少重复项,用于跟踪现有值的最有效结构是具有空结构值的映射。

参见 here (为方便起见粘贴在下面):

package main

import (
"fmt"
)

func hasDupes(m map[string]string) bool {
x := make(map[string]struct{})

for _, v := range m {
if _, has := x[v]; has {
return true
}
x[v] = struct{}{}
}

return false
}

func main() {
mapWithDupes := make(map[string]string)
mapWithDupes["a"] = "one"
mapWithDupes["b"] = "two"
mapWithDupes["c"] = "one"

fmt.Println(hasDupes(mapWithDupes)) // prints true

mapWithoutDupes := make(map[string]string)
mapWithoutDupes["a"] = "one"
mapWithoutDupes["b"] = "two"
mapWithoutDupes["c"] = "three"

fmt.Println(hasDupes(mapWithoutDupes)) // prints false
}

关于go - 检查 map 在 Go 中是否有重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57236845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com