Ucząc się Go, należy unikać typowych błędów, które mogą prowadzić do nieefektywnego kodu, błędów i frustracji. Oto kilka typowych błędów, których należy unikać:
1. Wpis na mapie Nil:
- Problem: Kiedy definiujesz mapę w Go, początkowo jest ona zerowa. Jeśli spróbujesz uzyskać do niego bezpośredni dostęp, program wpadnie w panikę.
- Rozwiązanie: Zainicjuj mapę za pomocą funkcji `make` lub literału mapy.
2. Wyłuszczenie wskaźnika zerowego:
- Problem: Jeśli spróbujesz wyłuskać wskaźnik zerowy, program wpadnie w panikę.
- Rozwiązanie: Upewnij się, że utworzyłeś nowy wskaźnik lub użyj metody odbierającej wskaźnik.
3. Wiele wartości w kontekście pojedynczej wartości:
- Problem: podczas próby zwrócenia wielu wartości w kontekście pojedynczej wartości program wpada w panikę.
- Rozwiązanie: Upewnij się, że używasz właściwych typów zwrotów i prawidłowo obsługujesz błędy.
4. Niezmienne wartości tablicy:
- Problem: Tablice w Go to wartości, a nie referencje. Oznacza to, że zmiany w tablicy nie mają wpływu na oryginalną tablicę.
- Rozwiązanie: Użyj wycinków zamiast tablic, ponieważ wycinki są odniesieniami i można je modyfikować.
5. Zmienna cienia:
- Problem: Jeśli zadeklarujesz zmienną o tej samej nazwie co parametr funkcji, spowoduje to zasłonięcie parametru.
- Rozwiązanie: Użyj innej nazwy zmiennej lub użyj polecenia `go run` z flagą `-gcflags`, aby wyłączyć Shadowing.
6. Brakujący przecinek w tablicy wieloliniowej lub wycinku:
- Problem: jeśli zapomnisz umieścić przecinek na końcu każdego wiersza w wieloliniowej tablicy lub wycinku, Twój kod nie zostanie skompilowany.
- Rozwiązanie: Upewnij się, że każda linia kończy się przecinkiem.
7. Nieprawidłowe użycie funkcji przycinania:
- Problem: Funkcja „trim” w Go usuwa wszystkie punkty Unicode z zestawu cięć. Może to prowadzić do nieoczekiwanych rezultatów.
- Rozwiązanie: Użyj „TrimSuffix” zamiast „trim”, aby uzyskać większą kontrolę nad procesem przycinania.
8. Nieprawidłowe użycie funkcji kopiowania:
- Problem: Funkcja „copy” w Go kopiuje minimalną liczbę elementów ze źródła do miejsca docelowego. Może to prowadzić do nieoczekiwanych rezultatów.
- Rozwiązanie: Upewnij się, że używasz prawidłowej liczby elementów i prawidłowo obsługujesz błędy.
9. Nie recenzuję gier:
- Problem: Brak recenzowania swoich gier może prowadzić do utraty okazji do ulepszeń.
- Rozwiązanie: Regularnie przeglądaj swoje gry, aby zidentyfikować obszary wymagające poprawy.
10. Brak pomocy od silniejszych graczy:
- Problem: Brak szukania pomocy u silniejszych graczy może prowadzić do utraty szans na poprawę.
- Rozwiązanie: Poproś o pomoc silniejszych graczy, aby nauczyć się nowych strategii i ulepszyć swoją grę.
11. Nieużywanie nazwanych wartości zwracanych:
- Problem: Nieużywanie nazwanych wartości zwracanych może spowodować, że kod będzie trudniejszy do odczytania.
- Rozwiązanie: Użyj nazwanych wartości zwracanych, aby uczynić kod bardziej czytelnym i łatwym w utrzymaniu.
12. Nieprawidłowe użycie odroczenia:
- Problem: Niewłaściwe użycie słowa kluczowego „defer” może spowodować, że kod będzie trudny do odczytania i zrozumienia.
- Rozwiązanie: Upewnij się, że poprawnie używasz słowa „defer”, aby odłożyć wykonanie funkcji do czasu powrotu otaczającej ją funkcji.
13. Nieprawidłowe użycie typów danych:
- Problem: użycie niewłaściwego typu danych może prowadzić do nieoczekiwanego zachowania.
- Rozwiązanie: Upewnij się, że używasz prawidłowego typu danych dla zadania.
14. Nieużywanie bibliotek wbudowanych:
- Problem: nieużywanie wbudowanych bibliotek może spowodować, że kod będzie trudniejszy do napisania i utrzymania.
- Rozwiązanie: Użyj wbudowanych bibliotek, aby zaoszczędzić czas i wysiłek.
15. Nieużywanie narzędzi do wyginania:
- Problem: nieużywanie narzędzi lintingowych może spowodować, że kod będzie trudniejszy do odczytania i zrozumienia.
- Rozwiązanie: Użyj narzędzi lintingowych, takich jak `golangci-lint`, aby zidentyfikować błędy w kodzie.
Unikając tych typowych błędów, możesz mieć pewność, że Twój kod Go jest wydajny, czytelny i łatwy w utrzymaniu.
Cytaty:[1] https://www.bacancytechnology.com/blog/common-mistakes-in-go
[2] https://www.reddit.com/r/baduk/comments/9wocj0/common_mistakes_in_learning_go/
[3] https://www.manning.com/books/100-go-mistakes-and-how-to-avoid-them
[4] https://www.linkedin.com/posts/ubaydah_five-common-mistakes-to-avoid-when-learning-activity-7057402591013482496-TeIu?trk=public_profile_like_view
[5] https://www.tftus.com/blog/the-most-common-golang-development-mistakes