Czy istnieje jakakolwiek kolekcja Go podobna do 'Set's in python?Czy zestawy istnieją w Go? (jak w Pythonie)
alternatywy:
- Czy istnieje prosty sposób wykonawczych Zestawy w Go?
- Czy istnieje metoda eliminowania duplikatów w plasterku?
Czy istnieje jakakolwiek kolekcja Go podobna do 'Set's in python?Czy zestawy istnieją w Go? (jak w Pythonie)
alternatywy:
Można po prostu mieć map[whatevertype]bool
i ustawić wartość na true
. Możesz dodać każdy element w plasterku jako klucz mapy, a następnie użyć numeru range
, aby wycofać tylko te niepowtarzalne.
package main
import "fmt"
func main() {
m := make(map[string]bool)
s := make([]string, 0)
s = append(s, "foo")
s = append(s, "foo")
s = append(s, "foo")
s = append(s, "bar")
s = append(s, "bar")
for _, r := range s {
m[r] = true
}
s = make([]string, 0)
for k, _ := range m {
s = append(s, k)
}
fmt.Printf("%v\n", s)
}
W tym momencie nie ma żadnej implementacji zestawu w języku golang. Musisz to zrobić samodzielnie lub uzyskać licencję innej firmy. Również tutaj jest ładny blogu:
http://openmymind.net/2011/7/15/Learning-Go-By-Benchmarking-Set-Implementation
Chcę tylko dodać, że rzeczywiście można użyć dowolną typ jako wartość, ponieważ nie dbam o to. Ale użycie 'bool' zawsze ustawionego na true ma dodatkową zaletę polegającą na możliwości przetestowania, czy element istnieje po prostu przez indeksowanie, ponieważ gdy indeksujesz klucz i on nie istnieje, zwróci wartość zero dla typu wartości, co jest fałszywe dla booleans. – newacct