就像php的array_unique
函数一样:
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
输出:
Array
(
[a] => green
[0] => red
[1] => blue
)
THX!
答案 0 :(得分:3)
没有内置的方法,所以你需要自己创建一个函数。
如果您想制作一般功能,则必须使用reflect
。如果您有特定的地图类型,那么您可以更轻松地实现它:
package main
import (
"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:蓝色]
注意强>
由于地图不维护订单,因此您无法知道哪些密钥会被剥离。