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.
Wskaźniki są zmorą wielu programistów i
nie ukrywam że one na początku mogą być trudne.
Google niestety też często używa się
wskaźników dlatego że poprzez wskaźniki to jest jedyny sposób żeby powiedzieć że coś
faktycznie jest LEM czyli niczym Google nie używa się słówka kluczowego
nurtu tylko się używa słówko kluczowe NIL aby zadeklarować wskaźnik w Google go
należy stworzyć oczywiście naszą zmienną a następnie jeśli chcemy użyć wskaźnika
do tej zmiennej wskaźnik to jest adres do miejsca gdzie znajduje się dla nas.
Aby to zrobić należy użyć takiego znaczka
czyli na klawiaturze i to jest nasz wskaźnik
jeśli chcemy go wypisać i zobaczyć czym ten wskaźnik jest Age.
Stwórzmy taką zmienną i piszemy nasz wskaźnik jako Aqua monitor.
Go home to i zobaczmy czym wskaźnik jest jak zobaczymy wskaźnik ostatecznie
wskazuje nam na 21 ale jest to i tak miasteczka.
Jeśli będziemy pisać coś czyli będziemy używali odpowiadania od Visual Studio ok
to zobaczymy że jest to gwiazda oznacza że to jest wskaźnik
bardzo ważną rzeczą jest to że normalna zmienna typu end nie może być.
Nie może być
ona może Domyślną wartością i jest zero czyli często spotkamy się w z problemem
i nie będziemy wiedzieć czy ten jest faktycznie zerem czy jest.
Wtedy należy użyć wskaźnik dlatego że
jeśli użyjemy aż równa się Nil to gol nam zwróci błąd tylko musimy
nasz program zwróci nam błąd że nie tu i jeśli użyjemy tutaj wskaźnika to wskaźnik
już może być kiedy wskaźnik jest wtedy kiedy nie ma wartości.
I to jest jedyny moment w Google kiedy faktycznie coś nie istnieje.
To wtedy kiedy mamy do tego wskaźnik ten wskaźnik nie ma wartości.
No dobrze ale po co używa się oprócz tego wskaźników slangu.
No to tu mamy taki przykład że mamy np.
21 lat i mamy ADHD 2 i to jest nasz atut czyli w tym przypadku ADHD.
Jeśli piszemy to nagle.
To on powinien być 21.
Jeśli sobie to uruchomimy to faktycznie jego 1 i 2.
To jest 21. Ale na przykład zmieńmy agenta 22 dlatego
że jakaś osoba zmieniła religię wyjdziemy na po prostu ma więcej lat.
Kochamy to i zobaczmy że tutaj każdy baran zgłasza że agent jest
22 x 2 to jest dalej 21 czyli Jeśli przekazujemy w Rangunie wskaźniki
czyli normalne zmienne to zawsze jest tworzona kopia tej zmiennej zupełnie nowa.
Więc jeśli przekażemy np.
wskaźnik do naszego agenta wskaźnik jest poprzez dodanie End
i postawimy na agenta 22 to nasze x2 powinno jako że to jest wskaźnik powinno
dalej wskazywać na naszą pierwszą zmienną czyli nasz Age 2 to jest dalej 22.
Dlatego że tworząc naszą drugą zmienną
przekazujemy tylko wskaźnik do tej pierwszej czyli nie kupujemy jej ale
wskazujemy na nią więc jeśli ona zostanie usunięta z pamięci to ten wskaźnik czyli
Age 2 będzie wtedy w taki sposób zmienne np.
takie wskaźniki mogą być usuwane z pamięci.
Ja wiem że na początku może to być skomplikowane i możesz nie widzieć sensu
używania wskaźników ale w następnych lekcjach kiedy będziemy
pisać praktyczny projekt zrozumiesz dlaczego tak ważne jest używanie
wskaźników a tymczasem zapraszamy do następnej lekcji.