Język Go. Tworzenie idiomatycznego kodu w praktyce Gdynia

Go pojawił się w 2009 roku, służy do tworzenia usług internetowych. Pozwala na łatwe pisanie wydajnych aplikacji. Zdobył popularność, jednak wielu programistów nie wykorzystuje w pełni jego możliwości. Dotyczy to zwłaszcza osób, które przy pisaniu kodu Go korzystają z konstrukcji właściwych dla …

od 58 Najbliżej: 0,8 km

Liczba ofert: 10

Oferta sklepu

Opis

Go pojawił się w 2009 roku, służy do tworzenia usług internetowych. Pozwala na łatwe pisanie wydajnych aplikacji. Zdobył popularność, jednak wielu programistów nie wykorzystuje w pełni jego możliwości. Dotyczy to zwłaszcza osób, które przy pisaniu kodu Go korzystają z konstrukcji właściwych dla innych języków. Nie jest to właściwa metoda programowania. Aby tworzyć przejrzysty, prawidłowy kod w Go, należy do niego podejść w sposób idiomatyczny. Ten praktyczny przewodnik jest przeznaczony dla osób, które chcą się nauczyć myśleć jak rasowi programiści Go. Dzięki niemu zaczniesz pisać idiomatyczny kod w Go, co pozwoli Ci optymalnie wykorzystywać możliwości tego języka. Dowiesz się, jak wygląda środowisko programistyczne Go i w jaki sposób przygotować je do pracy, również zespołowej. Przeanalizujesz kwestie zmiennych, typów, struktur sterujących i funkcji Go i być może odkryjesz subtelne niuanse odróżniające ten język od innych. Zapoznasz się także ze sprawdzonymi wzorcami projektowymi i przekonasz się, że naprawdę warto je stosować we własnym kodzie. Osobny rozdział poświęcono przyszłej implementacji typów sparametryzowanych i jej integracji z istniejącymi mechanizmami języka. W książce: czym jest idiomatyczny kod w języku Go najlepsze wzorce projektowe w Go przygotowanie i konfiguracja środowiska programistycznego zastosowanie mechanizmu refleksji, a także pakietów unsafe i cgo tworzenie wydajnego kodu w Go możliwe problemy, ich unikanie i rozwiązywanie Poznaj Go: nudny język do pisania fascynujących programów! Spis treści: Opinie o książce Język Go. Tworzenie idiomatycznego kodu w praktyce Przedmowa Do kogo jest skierowana ta książka Konwencje zastosowane w tej książce Posługiwanie się przykładami Podziękowania Rozdział 1. Konfigurowanie środowiska Go Instalowanie narzędzi Go Środowisko robocze Go Polecenie go Polecenia go run i go build Polecenie go run Polecenie go build Instalowanie pomocniczych narzędzi Go Formatowanie kodu Analiza składniowa i weryfikacja kodu Dobór narzędzi Visual Studio Code GoLand Go Playground Pliki reguł Aktualizacja Podsumowanie Rozdział 2. Typy podstawowe i deklaracje Typy wbudowane Wartość zerowa Literały Zmienne boolowskie Typy numeryczne Typy całkowite Specjalne typy całkowite Wybór typu całkowitego Operatory wartości całkowitych Typy zmiennoprzecinkowe Typy zespolone (zapewne nie będziesz się nimi posługiwać) Przedsmak informacji o łańcuchach i runach Jawna konwersja typów Słowo kluczowe var a operator := Zastosowanie słowa kluczowego const Stałe typowane i nietypowane Niewykorzystane zmienne Nazywanie zmiennych i stałych Podsumowanie Rozdział 3. Typy złożone Tablice za mało elastyczne, by używać ich bezpośrednio Wycinki Funkcja len Funkcja append Pojemność Funkcja make Deklarowanie wycinka Wycinki wycinków Wycinki czasami współdzielą pamięć Przekształcanie tablic w wycinki Funkcja copy Łańcuchy, runy i bajty Mapy Mapy czytanie i zapisywanie danych Idiom comma ok Usuwanie elementów z map Używanie map jako zbiorów Struktury Struktury anonimowe Porównywanie i konwertowanie struktur Podsumowanie Rozdział 4. Bloki, przesłanianie oraz struktury sterujące Bloki Przesłanianie zmiennych Wykrywanie przesłoniętych zmiennych Instrukcja if Cztery wersje pętli for Pełna pętla for Warunkowa pętla for Nieskończona pętla for Instrukcje break i continue Instrukcja for-range Iterowanie map Iterowanie łańcuchów Wartość zwracana przez pętlę for-range jest kopią Oznaczanie instrukcji etykietami Wybór właściwej wersji pętli for Instrukcja switch Puste instrukcje switch Wybór pomiędzy instrukcjami if a switch Instrukcja goto tak, goto! Podsumowanie Rozdział 5. Funkcje Deklarowanie i wywoływanie funkcji Symulowanie parametrów nazwanych i opcjonalnych Wycinki a zmienna liczba parametrów wejściowych Zwracanie wielu wartości Jeśli funkcja zwraca wiele wartości, należy je traktować osobno Ignorowanie zwróconych wartości Nazywanie zwracanych wartości Pusta instrukcja return stosowanie surowo wzbronione! Funkcje to wartości Deklaracja typu funkcyjnego Funkcje anonimowe Domknięcia Przekazywanie funkcji jako argumentów Zwracanie funkcji przez inne funkcje Instrukcja defer W Go obowiązuje wywołanie przez wartość Podsumowanie Rozdział 6. Wskaźniki Krótkie wprowadzenie do wskaźników Nie bój się wskaźników Wskaźniki oznaczają argumenty modyfikowalne Wskaźniki są ostatnią deską ratunku Wydajność przekazywania wskaźników Wartość zerowa a brak wartości Różnica między mapami a wycinkami Wycinki w charakterze buforów Jak ułatwić pracę mechanizmowi garbage collector Podsumowanie Rozdział 7. Typy, metody i interfejsy Typy w języku Go Metody Odbiorcy wskaźników i odbiorcy wartości Programowanie metod pod kątem instancji nil Metody także są funkcjami Funkcje kontra metody Deklaracje typów nie oznaczają dziedziczenia Typy są elementem dokumentacji programu Iota służy do tworzenia typów wyliczeniowych czasami Używaj osadzania w przypadku kompozycji Osadzanie nie jest dziedziczeniem Krótki przewodnik po interfejsach Interfejsy są bezpieczne pod względem typów (duck typing) Osadzanie a interfejsy Przyjmuj interfejsy, zwracaj struktury Interfejsy a nil Pusty interfejs nie informuje o niczym Asercja i przełączniki typów Asercje i przełączniki typów warto stosować oszczędnie Typy funkcyjne są pomostem dla interfejsów Niejawna implementacja interfejsu ułatwia wstrzykiwanie zależności Wire Go nie jest typowym językiem zorientowanym obiektowo (i bardzo dobrze) Podsumowanie Rozdział 8. Błędy Obsługa błędów podstawy W przypadku prostych błędów używaj łańcuchów znaków Błędy typu sentinel Błędy to wartości Opakowywanie błędów Funkcje Is i As Opakowywanie błędów przy użyciu instrukcji defer Funkcje panic i recover Tworzenie zrzutu stosu w przypadku błędu Podsumowanie Rozdział 9. Moduły, pakiety i importowanie Repozytoria, moduły i pakiety Plik go.mod Tworzenie pakietów Importowanie i eksportowanie Tworzenie pakietu i uzyskiwanie dostępu do niego Nazewnictwo pakietów Struktura modułu Zastępowanie nazwy pakietu Komentarze dotyczące pakietów i format godoc Pakiet internal Funkcja init unikaj jej, jeśli to możliwe Zależności cykliczne Eleganckie podejście do zmiany nazw i porządkowania API Obsługa modułów Importowanie kodu Obsługa wersji Wybór wersji minimalnej Aktualizowanie zgodnych wersji Aktualizowanie niezgodnych wersji Vendoring Serwis pkg.go.dev Dodatkowe informacje Publikowanie modułu Wersjonowanie modułu Serwery proxy modułów Wybór serwera proxy Repozytoria prywatne Podsumowanie Rozdział 10. Przetwarzanie współbieżne w Go Kiedy warto używać przetwarzania współbieżnego Goprocedury Kanały Czytanie, zapisywanie i buforowanie Pętla for-range i kanały Zamykanie kanału Zachowania kanałów Instrukcja select Zalecane rozwiązania i wzorce dotyczące współbieżności API powinno być pozbawione współbieżności Goprocedury, pętle for i zmieniające się zmienne Pamiętaj o sprzątaniu po goprocedurach Wzorzec z kanałem done Zastosowanie funkcji anulującej do wstrzymania goprocedury Kiedy używać kanałów buforowanych, a kiedy niebuforowanych Mechanizm backpressure Wyłączanie klauzuli case w instrukcji select Określanie limitu czasu Zastosowanie struktury WaitGroup Uruchamianie kodu dokładnie raz Łączenie różnych aspektów przetwarzania współbieżnego Kiedy używać muteksów zamiast kanałów Operacje atomowe raczej Ci się nie przydadzą Gdzie szukać dodatkowych informacji o współbieżności? Podsumowanie Rozdział 11. Biblioteka standardowa Pakiet io i przyjaciele Pakiet time Czas od uruchomienia systemu Liczniki czasu i limit czasu Pakiet encoding/json Zastosowanie znaczników struktur w celu dodania metadanych Unmarshaling i marshaling JSON i operacje odczytywania i zapisywania Kodowanie i dekodowanie strumieni JSON Niestandardowe przetwarzanie obiektów JSON Pakiet net/http Klient Serwer Oprogramowanie pośredniczące Rozszerzanie możliwości serwera przy użyciu idiomatycznych modułów zewnętrznych Podsumowanie Rozdział 12. Kontekst Czym jest kontekst? Anulowanie Liczniki czasu Anulowanie kontekstu we własnym kodzie Wartości Podsumowanie Rozdział 13. Pisanie testów Podstawy testowania Zgłaszanie błędów w testach Konfigurowanie i demontowanie Przechowywanie prostych danych testowych Przechowywanie wyników testowania w pamięci podręcznej Testowanie publicznego API Porównywanie wyników testów przy użyciu modułu go-cmp Testy tablicowe Sprawdzanie pokrycia kodu Testowanie wydajności Zalążki w języku Go Pakiet httptest Testy integracyjne i znaczniki kompilacji Wyszukiwanie problemów ze współbieżnością przy użyciu narzędzia race checker Podsumowanie Rozdział 14. W krainie smoków: mechanizm refleksji oraz pakiety unsafe i cgo Mechanizm refleksji umożliwia manipulowanie typami podczas działania programu Typy, rodzaje i wartości Typy i rodzaje Wartości Tworzenie nowych wartości Zastosowanie refleksji do sprawdzenia, czy wartość interfejsu wynosi nil Tworzenie marshalera danych przy użyciu mechanizmu refleksji Zastosowanie refleksji do tworzenia funkcji automatyzujących powtarzalne zadania Przy użyciu refleksji da się tworzyć struktury, ale nie rób tego Przy użyciu refleksji nie da się tworzyć metod Używaj refleksji tylko wtedy, gdy to się opłaca Pakiet unsafe rzeczywiście jest niebezpieczny Zastosowanie pakietu unsafe do konwersji zewnętrznych danych binarnych Pakiet unsafe a łańcuchy i wycinki Narzędzia związane z pakietem unsafe W pakiecie cgo chodzi o integrację, nie o wydajność Podsumowanie Rozdział 15. Spojrzenie w przyszłość typy sparametryzowane w Go Typy sparametryzowane ograniczają redundantność kodu i zwiększają bezpieczeństwo typowania Wstęp do typów sparametryzowanych w Go Zastosowanie list typów do określania operatorów Funkcje sparametryzowane i algorytmy abstrakcyjne Listy typów ograniczają możliwość przypisywania stałych oraz implementacji Pominięte kwestie Typy sparametryzowane a idiomatyczny kod w Go Co niesie przyszłość? Podsumowanie O autorze Kolofon O autorze: Jon Bodner jest inżynierem oprogramowania i architektem z dwudziestoletnim doświadczeniem. Zajmował się tworzeniem i rozwijaniem aplikacji dla różnych sektorów, między innymi dla finansów, handlu, ochrony zdrowia czy administracji. Często występuje na konferencjach dotyczących języka Go. Jest też współautorem wielu narzędzi służących do rozwijania oprogramowania.

Specyfikacja

Podstawowe informacje

Autor
  • Jon Bodner
Wybrane wydawnictwa
  • Helion
Okładka
  • Miękka
Rok wydania
  • 2022
Ilość stron
  • 328
Tematyka
  • Programowanie
ISBN
  • 9788328383944