od Podstaw
6 godz. 26 min · Go · Full-stack i Programowanie
Piotr KrzesajW Go wszystko opiera się o typy. Czym one są? Tak zwane typy proste(string, int, float itd.) to tylko początek, interfejsy, struktury i nie tylko. Pokażę Ci jak używać wielu wątków Go i jakie są sposoby komunikacji między nimi, a także opowiem i pokażę na praktycznych przykładach jakie zagrożenia niesie ze sobą wykorzystywanie wielowątkowości.
W Go nie mamy obiektowości znanej z wielu innych języków. Posiada zalążki obiektowości ale sprawia to wielu osobom problemy jak podejść do architektury aplikacji. Nauczę Cię jak podejść do funkcyjności w taki sposób aby wciąż nawet duże aplikacje były łatwo rozwijalne lub co ważniejsze, była możliwość podzielenia ich na mniejsze mikroserwisy gdy zajdzie taka potrzeba.
Wśród programistów można usłyszeć głosy że w Go wielowątkowość jest świetnie rozwiązana i trudno się z tym nie zgodzić ale warto pamiętać że nasze mózgi działają jednowątkowo i często pomijamy zagadnienia takie jak wyścig wątków, deadlock i inne wyzwania, które stawia przed nami praca na dzisiejszych procesorach. Pokażę i wytłumaczę Ci w praktyce większość z nich i jak sobie z nimi radzić i na co uważać. Jeśli nie pracowałeś z językami wielowątkowymi to ta sekcja jest specjalnie dla Ciebie.
Zastanawiałem się wiele razy czy nie istnieje taka technologia w której piszę sobie jeden pliczek i z tego pliku do każdego języka mogę wygenerować sobie klienta i serwer jedną komendą. To jest w wielkim skrócie GRPC, nie musisz się przejmować czy używasz HTTP 1.1/2.0, czy używasz websocketów do transmisji, czy przesyłasz dane w formacie JSON, XML, Protobuf, czy jest moje API kompatybilne wstecz. Tym wszystkim zajmuje się GRPC. Wyjaśnię Ci czym dokładnie jest, dlaczego jest super i wreszcie jak tego używać razem z językiem Go. Napiszemy praktyczny projekt chatu w którym wykorzystamy funkcję server-streaming.
Pisząc aplikację chcemy aby uruchamiała się ona tak samo niezależnie czy uruchamiamy ją na Linuxie, macOS czy na Windowsie i z pomocą przychodzi nam Docker. Pokażę Ci jak z gotowej aplikacji napisanej w Go stworzyć obraz Dockerowy aby móc go uruchamiać na swoim komputerze bądź serwerze. Pokażę Ci również jak nasz obraz Dockerowy połączyć z bazą danych za pomocą Docker Compose aby móc cieszyć się działającą aplikacją uruchamianą jedną komendą.
Kurs Go nie mógłby obejść się bez serwera HTTP stworzonego tylko z pomocą biblioteki wbudowanej w język Go. Dokładnie tak, nie musisz instalować nic poza językiem i już możesz tworzyć serwery co jest świetną wiadomością. Następnie pokażę Ci popularną bibliotekę Gin do tworzenia serwerów. Dzięki temu zobaczysz różnice i ocenisz czy warto zostać przy wbudowanej bibliotece czy może używać zewnętrznych.
Jak w każdym języku serwerowym tak i w Go możemy się podłączyć pod bazę danych. Krok po kroku wyjaśnię Ci jak to zrobić prosto i przyjemnie używać baz SQL, które od dziesiątek lat cieszą się niezwykłą popularnością. Migracje, zapytania czy dbanie o połączenie to nie będzie dla Ciebie nic trudnego.
Ten Kurs powstał z myślą o osobach, które chciałyby poszerzyć swoją wiedzę o język Go. Zakłada on że posiadasz już wiedzę z minimum jednego innego języka programowania i wiesz w jaki sposób działa komunikacja po protokole HTTP. Możesz też znać Go i chcieć zobaczyć jak dzielić programy na paczki tak aby były łatwo rozwijalne w przyszłości.
Dokumentacja w Google jest dosyć pomocna i
ja osobiście często z niej korzystam w przeciwieństwie do innych języków które
znam gdzie większość informacji szukam na full albo w towarach.
Aby skorzystać z dokumentacji do Google
należy wejść na stronę Google'a E.On a następnie wchodzimy w
pakiet jest to typowa dokumentacja do standardowych paczek
powiedzmy na tę stronę i zobaczmy to jest standard czyli to jest dotyczy
wersji go w wersji 1 17 2 czyli obecnie najnowszej.
No i tutaj na przykład jeśli jedziemy mamy
tutaj paczkę i paczka net dostarcza informacji na temat Network to i
tutaj dotyczy to również TCP IP u DP domen i sekretów.
Więc jeśli sobie uruchomimy to zobaczymy
że mamy tutaj paczkę HTTP za pomocą której możemy robić zapytania.
Możemy też tworzyć jak i to jest przykład
dokumentacji w jaki sposób możemy tego używać będziemy do tej paczki http.
No to tutaj mamy jasno pokazane w jaki sposób możemy tworzyć zapytania typu typu
POST typu POST form i jakie są dobre praktyki tworzenia tego jak np.
dostarczyć certyfikat DNS czyli jak zrobić z http https.
No dobrze weźmy sobie z powrotem do
na naszą stronę Google i pokażę ci pewną ciekawostkę jeśli
wejdziemy tutaj w dokument a następnie jedziemy troszkę niżej to efekt w Google.
To tutaj mamy dużo porad na temat tego w jaki sposób pisać poprawny kod w Google.
I tutaj na przykład jest taki
identyfikator Blank identyfikuje służy do tego że jeśli nie chcemy używać jakiejś
zmiennej w Google a ona jest zwracana z jakiejś funkcji czyli na to mamy funkcję
oraz Kropka nad i ona zwraca nam jakąś wartość.
I błąd czyli kropkę czyli typu czyli dwie
wartości i my nie chcemy tej pierwszej wartości chcemy tylko błąd.
Wtedy podajemy TUTAJ Under Score czy
podłoga czy jakieś inne nazwy tutaj wchodzą w grę ale ja to nazywam tak skoro
nawet wtedy kompilator pomija tę zmienną i nie możemy jej używać.
Tak więc myślę że pokazałem że ta
dokumentacja faktycznie może się do czegoś przydać i jest czasami przydatna i możemy
szukać tutaj pewnych rozwiązań na problemy z którymi się spotykamy.
A tymczasem zapraszam Cię do następnej lekcji.