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.
W slangu możemy zaimplementowane funkcje sort na różne sposoby.
Funkcję filtra musimy niestety pisać
ręcznie za pomocą pióra i zmiennej i ma też niestety musimy przeprowadzać
ręcznie ze względu na to że Polak nie posiada czegoś takiego jak czynność.
Oczywiście przyszłość tutaj patrzy się pozytywnie jeśli chodzi o manga
dlatego że w wersji następnej czyli 1 18 KO na wieczność podobno ma zostać
wprowadzona natomiast na tę chwilę pokaże jak się to obecnie robi.
Nie przejmuj się jeśli nie będziesz pamiętał jak traktować ja osobiście za
każdym razem Sprawdzam jaki sposób to robić.
Więc przejdźmy do tego
co pokazał a możliwe że na Litwie zobaczymy jak ja za każdym razem
żeby potraktować coś musimy mieć najpierw coś co chcemy potraktować więc musimy
zadeklarować tablicę aby zadeklarować tablicę stwórzmy zmienną którą już znamy.
I niech to będzie float 32 i do środka leja sobie temperaturę w Warszawie
i aby potraktować to to Pierwszym sposobem jest oczywiście pętla i sortowanie za
pomocą pętli najbardziej klasyczny sposób ręczny.
Na szczęście umożliwia nam sortowanie w inny sposób.
Niestety muszę to sprawdzić wpisuje sobie
SOR Goulding i The Private i Pierwszym sposobem jest użycie slajdów z tzw.
.
W ten sposób po prostu przekonuje się KOD i przy użyciu standardowej biblioteki sort
i tutaj najpierw musimy podać co chcemy notować w naszym przypadku będzie to.
I tutaj jako funkcja jako.
Slayer przyjmuje interfejs pusty interfejs w Google oznacza że to może być wszystko.
Pusty interfejs nie wymaga żadnych metod
więc wszystko im prezentuje ten interfejs więc możemy użyć tam czegokolwiek i to
jest lekkie zastępstwo generuje trudności ale to nie jest generator.
I tutaj co drugi parametr jest Les to jest
funkcja czyli jako parametr możemy do funkcji jako parametr przekazać funkcję.
I tu i j zwraca.
I to są wartości typu int indeks i indeks.
Więc jeśli indeks jest mniejszy od I J to wtedy mamy zwrócić.
A jeśli nie jest mniejszy to w I ten sposób to sortowanie działa.
Czyli jeśli w naszym przypadku w
jednym i w drugim przypadku nie chcemy tutaj odwoływać się do niczego
jest mniejsze od następnego elementu to wtedy jeśli piszemy tę samą zmienną przed.
Print Line i napiszemy ją po.
I uruchomimy nasz kod to zobaczymy.
Pierwsze nie potraktowane w takiej
kolejności w jakiej to było a drugie jest już posegregowane wedle poprawnej
kolejności i to jest pierwszy sposób na sortowanie w ciągu.
Drugi sposób już pokazuje tylko wejdę na odpowiednią stronę.
Drugim sposobem jest implementacja interfejsu długość mniejsze egzamin i
po co stosować taką długą metodę czyli implementacja tych trzech zmiennych.
Zamiast tego możemy zastosować z biblioteki sort
sort slajdów z tabel przydatne jest to w momencie kiedy chcemy
ten sam naszą strukturę potraktować kilka razy dlatego że jeśli zaimplementowane raz
ten interfejs do naszej struktury to sortowanie jej będzie bardzo proste
dlatego że tutaj możemy zobaczyć że sort kropka sort po prostu startujemy naszą
struktury i tyle a tym samym prezentujemy to sortowanie.
W tym celu musimy stworzyć oczywiście
strukturę z temperaturami więc typ z typem i będzie to nasza struktura w środku.
Stwórzmy naszą tablicę lotów i żeby do tego typu dopisać to sortowanie to
musimy zaimplementowane ten interfejs więc kupujemy nasz interfejs do edytora
i musimy go zaimplementowane jak najszybciej to zrobić.
No to musimy to funkcję C i mamy pierwszą funkcję zaimplementowane prawie.
Teraz kupujemy sobie po prostu tę
deklarację wiemy ją tutaj i tu musimy coś zwrócić więc tymczasowo
zwracamy forsę tylko żeby się kontynuowało.
I dokładnie to samo zrobimy.
Tutaj nie musimy zwracać więc nie chcemy i mamy zaimplementowane nasz interfejs
teraz musimy go uzupełnić aby go uzupełnić.
To jest funkcja LAN funkcja LAN jest bardzo prosta wystarczy zwrócić długość
naszego interfejsu naszej struktury więc cała kropka zwraca długość tej tablicy.
Temperatura to jest.
Czy jest mniejsza to jest dokładnie to
samo co robiliśmy tutaj i możemy sobie to skopiować.
I zwrócić tylko
łączą ten czas musimy zamienić to co i tutaj robimy dokładnie to samo
jeśli chodzi o słowa swap oznacza że za zmienną i musimy podłożyć wartość J.
żeby to zrozumieć musimy zrobić co i za i pod mamy.
J.
I J.
Teraz musimy zadbać o to dlatego że w tym
przypadku jeśli mamy coś co sprawia że to przekazujemy kopia a potrzebujemy
przekazać referencje dodajemy do tej gwiazdki.
Wtedy nie będzie za każdym razem kupował tej struktury kiedy jest wywołana ta
funkcja tylko będzie używał tej która już jest stworzona więc aby tego użyć.
Tak jak wspomniałem sortowanie w slangu nie jest prostą sprawą ani przyjemną.
Musimy sobie stworzyć.
To będzie nasza struktura i do środka podamy nasze temperatury w Warszawie.
Teraz aby to potraktować jako kropka sort i wrzucić.
Tak i znowu zróbmy dokładnie to samo w piśmie.
Przed sortowanie.
I sortowania.
Musimy sobie wpisać Citi i to samo wypisać.
Po skończonym traktowaniu.
Ale żeby to zrobić musimy jeszcze importować paczkę ft czyli import aut.
Po uruchomieniu naszego programu oczywiście po wykonaniu funkcji
mamy potraktowane nasze tablice i myślę że nikt nie stwierdzi że
sortowanie w slangu to jest coś przyjemnego.
Przejdźmy w takim razie do filtrowania.
Załóżmy że chcemy mieć tylko i wyłącznie temperatury które są powyżej zera.
żeby to zrobić musimy stworzyć oczywiście już gotową tablicę więc filtr.
I stwórzmy ją jako pustą tablicę.
Teraz musimy przejść się po wszystkich elementach żeby to zrobić.
Używamy znanej pętli FOR i i tak czujemy się po wszystkich elementach.
Kropka.
Tu jest to proszę bardzo i mamy tutaj temperaturę jako parametr.
Zapomniałem dodać przecinka.
I teraz jeśli.
Temperatura jest większa od zera
to wtedy do filtrów dodaj czyli napęd i taka jest funkcja napęd dodaje na koniec
tablicy element ale musimy teraz taka funkcja zwraca
dodaną tablicę ale to funkcja musimy przekazać istniejącą
tablicę i element który chcemy dojechać na sam koniec.
I tutaj na samym końcu
chcemy oczywiście wypisać nasze temperatury które są powyżej zera.
Jak widzimy to prześwit żeby przemawiać na temperaturę np.
32 Plus 64 albo np.
na 44 albo inną strukturę.
Czyli chcemy czy trzeba powołać na nową strukturę czyli stwórzmy nową strukturę.
W ten sposób i tutaj będziemy mieli temperaturę ale np.
we flocie 64 bitowym żeby pływać musimy stworzyć oczywiście
możemy to zrobić oczywiście na dwa sposoby.
Pierwszym sposobem jest stworzenie czegoś.
I tutaj tworzymy naszą nową strukturę do
której nie przekazujemy nic dlatego że Domyślną wartością
tego pola będzie pusta tablica typu flash 64 więc teraz musimy po raz kolejny
chować się po wszystkich elementach naszej tablicy.
I tutaj New City.
Ten apel i dodajemy do obecnej tablicy nowy element.
Oczywiście chcemy to zmienić i to przekazać a nie do typu
to zobaczymy że tutaj nam podpowiada że jest to błąd dlatego że.
Ta struktura nie jest lisem.
Chcemy dodać do naszej tablicy nowe pole ale nie.
Do a nie do struktury mostu chcemy tego
pola dodać nową wartość a nie do struktury.
I tutaj znowu nam wyskakuje błąd że musimy ratować flotę 32 na flotę 64 aby to zrobić
wystarczy napisać flotę 64 w nawiasach i to będzie działało.
Jeśli to piszemy to zobaczymy że jest faktycznie zapowiadane.
Ta struktura to struktura.
Drugim sposobem żeby to zrobić moim
zdaniem trochę wolniejszym jest dopisanie funkcji do której będzie coś takiego.
Ma tu minusy.
I to będzie zwracało naszą nową strukturę
czyli kupujemy stary na nowy i w zasadzie trzeba samo kopiować.
Tylko że do tej funkcji tutaj użyć naszego C.
Dlatego że nasze C to jest nasza struktura.
Odwołujemy się następnie do naszych
temperatur i w zasadzie do nowej zmiennej która jest nasza nowa struktura
za każdym razem dodajemy nową temperaturę a na końcu po prostu ją zwracamy.
Natomiast jeśli to napiszemy w ten sposób to wystarczy że użyjemy istniejącej.
Z tego co mamy tutaj niestety mamy ją już z mapą do naszej nowej struktury.
No dobrze i tej reakcji Pokazałem Ci jak co katować.
Powiem ci dwa sposoby na sortowanie krótszy i dłuższy.
Pokazałem że ja osobiście sam zawsze w
jaki sposób startować bo to jest zwykła ludzka pętla for jeśli
chodzi o mocowanie to również trzeba to robić.
Nie tak fajnie i łatwo jak w innych językach.
I to by było na tyle w tej akcji zapraszam Cię do następnej.