Idiom zbioru w Go
Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 31 z 68.
Go nie ma wbudowanej struktury danych zbioru, jak wiele innych języków programowania. Programiści Go opracowali jednak eleganckie rozwiązanie, które wykorzystuje mapy do symulowania zbiorów. Ten wzorzec stał się tak powszechny, że uznaje się go za idiomatyczny dla Go.
Idiom zbioru w Go wykorzystuje mapę, w której liczą się tylko klucze, a nie wartości. Ponieważ jako wartość trzeba coś przechować, programiści Go używają pustej struktury struct{}. Oto podstawowy wzorzec:
var mySet map[string]struct{}Pusta struktura struct{} jest wyjątkowa, ponieważ zajmuje zero bajtów pamięci. Dzięki temu doskonale nadaje się do zbiorów, w których trzeba jedynie śledzić, czy coś istnieje, czy nie, bez marnowania pamięci na bezwartościowe wartości.
To podejście wykorzystuje podstawową właściwość kluczy mapy: muszą być unikatowe. Gdy dodajesz element do zbioru, tak naprawdę dodajesz klucz do mapy. Mapa automatycznie wymusza unikatowość, zapewniając semantykę zbioru.
W kolejnych lekcjach nauczysz się tworzyć zbiory, manipulować nimi i korzystać z nich, stosując ten idiomatyczny wzorzec języka Go. Ta technika jest powszechnie stosowana w bazach kodu Go do śledzenia unikalnych elementów, implementowania algorytmów i rozwiązywania problemów wymagających szybkiego sprawdzania przynależności do zbioru.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowane sterowanie przepływem
Instrukcja switch z `fallthrough`Przerywanie zagnieżdżonych pętliKontynuowanie określonej pętliInstrukcja `goto`Podsumowanie — zaawansowane sterowanie pętlami4Projekt: Prosta lista zadań
Konfiguracja projektuDodawanie zadania2Struktury i metody
Definiowanie metod dla strukturOdbiorniki przez wartośćOdbiorniki przez wskaźnikWybór odbiornikówMetody a funkcjePodsumowanie — działanie struktur5Mapy w szczegółach
Mapy strukturWskaźniki jako wartości mapSprawdzanie, czy mapy są nilPorównywanie mapPodsumowanie — licznik częstości słów3Interfejsy (podstawy)
Czym jest interfejs?Definiowanie interfejsuImplementowanie interfejsuUżywanie typów interfejsowychPusty interfejsAsercje typuPrzełącznik typówPodsumowanie – kształty i zachowania6Idiomatyczny Go: zbiory
Idiom zbioru w GoTworzenie zbioruDodawanie elementów do zbioruSprawdzanie przynależnościUsuwanie elementów ze zbioruIterowanie po zbiorzePodsumowanie – unikalne nazwy użytkownikówPoćwicz samodzielnie: Kompilator Go online