J - Helion
Autor: Jon Bodner
Tytu艂 orygina艂u: Learning Go: An Idiomatic Approach to Real-World Go Programming
T艂umaczenie: Piotr Cie
ISBN: 978-83-283-8394-4
stron: 328, Format: 168x237, ok艂adka: mi
Data wydania: 2022-04-01
Ksi臋garnia: Helion
Cena ksi膮偶ki: 71,20 z艂 (poprzednio: 87,90 z艂)
Oszcz臋dzasz: 19% (-16,70 z艂)
Tytu艂 orygina艂u: Learning Go: An Idiomatic Approach to Real-World Go Programming
T艂umaczenie: Piotr Cie
ISBN: 978-83-283-8394-4
stron: 328, Format: 168x237, ok艂adka: mi
Data wydania: 2022-04-01
Ksi臋garnia: Helion
Cena ksi膮偶ki: 71,20 z艂 (poprzednio: 87,90 z艂)
Oszcz臋dzasz: 19% (-16,70 z艂)
Nak艂ad wyczerpany
Tagi: Go - Programowanie
Go pojawi
Zobacz tak偶e:
- Programowanie z GO. Kurs video. Podstawy j臋zyka 139,00 z艂, (69,50 z艂 -50%)
- Programowanie w j臋zyku Go. Koncepcje i przyk艂ady. Wydanie II 69,00 z艂, (34,50 z艂 -50%)
- J臋zyk Go. Poznaj i programuj 89,00 z艂, (44,50 z艂 -50%)
- J臋zyk Go. Poznaj i programuj 89,00 z艂, (53,40 z艂 -40%)
- J 99,00 z艂, (74,25 z艂 -25%)
Spis tre艣ci
J臋zyk Go. Tworzenie idiomatycznego kodu w praktyce -- 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
- Polecenia go run i go build
- 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
- Typy wbudowane
- 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
- Bloki
- 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
- Deklarowanie i wywo艂ywanie funkcji
- 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
- Podstawy testowania
- 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
- Typy, rodzaje i warto艣ci
- 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
- Mechanizm refleksji umo偶liwia manipulowanie typami podczas dzia艂ania programu
- 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