StrSlice deduplication.

This commit is contained in:
Andrey Smirnov
2014-01-24 17:45:16 +04:00
parent 2fe8f5cc1a
commit 6ffc6056c4
2 changed files with 35 additions and 0 deletions
+26
View File
@@ -75,3 +75,29 @@ func StrMapSortedKeys(m map[string]string) []string {
sort.Strings(keys)
return keys
}
// StrSliceDeduplicate removes dups in slice
func StrSliceDeduplicate(s []string) []string {
l := len(s)
if l < 2 {
return s
}
if l == 2 {
if s[0] == s[1] {
return s[0:1]
}
return s
}
found := make(map[string]bool, l)
j := 0
for i, x := range s {
if !found[x] {
found[x] = true
s[j] = s[i]
j++
}
}
return s[:j]
}