
Struktury danych w Go
Arrays, slices, maps, structs, pointers, make vs new, wartości nil
1Czym jest slice w Go?
Czym jest slice w Go?
Odpowiedź
Slice to dynamiczny widok na bazową tablicę (array), który umożliwia manipulowanie sekwencjami elementów o zmiennej długości. W przeciwieństwie do tablic, które mają stały rozmiar ustalany w czasie kompilacji, slice'y mogą dynamicznie rosnąć lub kurczyć się dzięki operacjom takim jak append. Ta elastyczność czyni je najczęściej używaną sekwencyjną strukturą danych w Go do przechowywania kolekcji jednorodnych elementów.
2Jaka jest główna różnica między array a slice w Go?
Jaka jest główna różnica między array a slice w Go?
Odpowiedź
Fundamentalna różnica tkwi w rozmiarze: array ma stały rozmiar ustalany w czasie kompilacji i jest częścią samego typu, podczas gdy slice ma dynamiczny rozmiar, który może zmieniać się w czasie wykonania. To rozróżnienie oznacza, że dwie tablice o różnych rozmiarach są uznawane za typy niekompatybilne, podczas gdy wszystkie slice'y o tym samym typie elementu są kompatybilne. Slice'y są więc bardziej elastyczne i częściej używane we współczesnym kodzie Go.
3Jak utworzyć pusty slice w Go?
Jak utworzyć pusty slice w Go?
Odpowiedź
Składnia literałowa z pustymi nawiasami kwadratowymi i pustymi nawiasami klamrowymi to idiomatyczny sposób tworzenia zainicjalizowanego pustego slice'a. To podejście tworzy slice o długości 0, ale nie nil, gotowy do przyjmowania elementów przez append. W przeciwieństwie do prostej deklaracji, która dałaby slice nil, ta jawna inicjalizacja gwarantuje slice gotowy do natychmiastowego użycia bez ryzyka nieoczekiwanego zachowania przy dodawaniu elementów.
Której funkcji należy użyć, aby zainicjalizować slice z określoną pojemnością?
Co się dzieje, gdy dodajemy element do slice'a, którego pojemność została osiągnięta?
+17 pytań z rozmów
Inne tematy rekrutacyjne Go
Podstawy Go
Interfejsy w Go
Obsługa błędów
Podstawy goroutines
Channels
Go Modules
Serwer HTTP
Klient HTTP
Kodowanie JSON
Database/SQL
Pakiet context
Testing
Wzorce współbieżności
Prymitywy synchronizacji
Frameworki webowe Go
Projektowanie API REST
gRPC
Reflection
Zarządzanie pamięcią
Optymalizacja wydajności
Generics
Go Design Patterns
Microservices
Bezpieczeństwo i uwierzytelnianie
Docker & Containerization
Kubernetes Basics
Zaawansowany Go
Tworzenie CLI
Opanuj Go na następną rozmowę
Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.
Zacznij za darmo