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 istnieje coś takiego jak
Interface i interfejs służy do tego interfejs ma w sobie metody które są
wymagane do tego żeby ten interfejs został spełniony.
Czyli jeśli mamy na przykład interfejs który
wymaga żeby w każdym typie slangu była funkcja multiplayer
to ta funkcja musi być w danym typie jeśli jest w danym
typie i dany typ spełnia tę funkcję to wtedy też jest spełnione.
Ja rozumiem że to jest taka skomplikowana także zróbmy to w praktyce.
W poprzedniej lekcji pokazałem jak stworzyć strukturę
która jest strukturą natomiast stwórzmy nasz interfejs interfejs w
naszym przypadku będzie to nazywane multiplayer interfejs i to interfejs.
I załóżmy że jeśli nasz interfejs
ma zostać spełniony to musi być w środku funkcja multiplayer.
I to ma być album który ma być w ten sposób.
I każdy typ w Google który spełni i będzie
miał tę funkcję automatycznie będzie implementacją tego interfejsu.
Co to oznacza.
Oznacza to tyle że jeśli w tym momencie na naszych ekranach nie będzie już
eksploatowany czyli będzie z małej litery czyli nie
możemy go stworzyć to możemy sobie stworzyć folder.
Projektantów i ta funkcja jest dostępna publicznie i
chcemy przyjąć w niej A i B i chcemy zwrócić multiplayer.
Chcemy zwrócić nasz
kwadrat który na którym jedyne co możemy zrobić to użyć tej metody.
Dodajemy tutaj np. drugą metodę GPS i ona będzie nam zwracała
na pole B i w tym momencie jeśli z tej funkcji zwrócimy nasz interfejs to jedyne
co będziemy mogli zrobić to wywołać te dwie funkcje i nic więcej.
A co my tutaj zwrócimy zwrócimy.
Oczywiście żeby stworzyć naszą strukturę musimy podać a i musimy podać b.
Tak i w tym momencie Google zwrócił nam że
nie możemy użyć lolita real ass multiplayer interface I get.
Czyli nie mamy zaimplementowane metody GET
BACK żeby to zrobić oczywiście musimy dodać funkcje tak jak tango
jest trochę jak Tango Get Bee z dużej litery oczywiście nie zwracamy.
To będzie jak Tango.
Kropka.
I znowu Golonka nam podkreśla że jest jakiś problem missing Bee Goodbye Silver.
Czyli używamy tej broni dlatego że.
Dlatego musimy zwrócić naszą strukturę jako wskaźnik również.
I wtedy Google już nie ma żadnego problemu.
No dobrze wróćmy do naszej funkcji.
I w tym momencie już nie możemy stworzyć
struktury jak możemy w paczce tylko i wyłącznie stworzyć
czyli tak jak podając IP więc podajemy 10 do 20 i co możemy zrobić na tym.
Na tym możemy pobrać bi i możemy wykonać tę samą funkcję którą
wykonywaliśmy wcześniej więc pomożemy taka z 15 i w piśmie b.
Uruchom program i zobaczmy że to faktycznie jest nasza struktura która
działa ale jej typ to jest multiplayer interfejs oczywiście
pod spodem możemy podejrzeć że to jest faktyczny pakiet
czyli często jest to struktura ale mamy dostęp tylko i wyłącznie do metod
z tego interfejsu a nie do całej struktury.
W ten sposób możemy np.
tworzyć stałe mimo tego że w strukturach nie ma czegoś takiego jak stałe
i to byłoby na tyle jeśli chodzi o interfejs i zapraszam do następnej lekcji.