2014-01-28 24 views

回答

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:藍色]

Playground

注意

由於地圖不保持順序,因此無法知道哪些鍵將被剝離。

相關問題