猿问

有没有办法为 golang 唯一一个 map[string]interface{}?

就像array_uniquephp 的函数一样:


$input = array("a" => "green", "red", "b" => "green", "blue", "red");

$result = array_unique($input);

print_r($result);

输出:


Array

(

    [a] => green

    [0] => red

    [1] => blue

)

谢谢!


湖上湖
浏览 276回答 1
1回答

鸿蒙传说

没有内置的方法可以做到这一点,因此您需要自己制作一个函数。如果要制作通用功能,则必须使用reflect. 如果您有特定的地图类型,那么您可以更轻松地制作它:package mainimport (    "fmt")func Unique(m map[string]string) map[string]string {    n := make(map[string]string, len(m))    ref := make(map[string]bool, len(m))    for k, v := range m {        if _, ok := ref[v]; !ok {            ref[v] = true            n[k] = v        }    }    return n}func main() {    input := map[string]string{"a": "green", "0": "red", "b": "green", "1": "blue", "2": "red"}    unique := Unique(input)    fmt.Println(unique)}可能的输出地图[a:绿色 0:红色 1:蓝色]笔记由于映射不维护顺序,因此您无法知道哪些键将被删除。
随时随地看视频慕课网APP

相关分类

Go
我要回答