Zajmę się tematem języka Go. Czym on jest, dlaczego warto się go nauczyć, jak stworzyć w nim prosty program „Hello World”, jak stworzyć sobie środowisko do pracy z nim i zamieszczę parę skryptów do zautomatyzowania sobie pracy.
Pragnę jeszcze tylko nadmienić, że ten wpis jest skierowany do użytkowników, którzy już potrafią programować w jakimś języku, ale jeśli nie potrafisz, to nie martw się. Do wszystkiego zrobiłem odnośniki, więc nawet jeżeli nie zrozumiesz tego wpisu, to i tak coś stąd wyniesiesz.
Go (często nazywany Golang’iem dla odróżnienia od słowa „go”) jest językiem programowania opracowanym przez programistów z Google: Roberta Griesemera, Roba Pikea oraz Kena Thompsona.
Łączy w sobie łatwość pisania aplikacji charakterystyczną dla języków dynamicznych (np. Pythona, Lispa, C#’a oraz JavaScriptu) z wydajnością języków kompilowanych (np. C, C++).
Kompilacja w Go po pierwszym razie jest bardzo szybka w porównaniu do np. kompilacji w C++. Język ten posiada również wbudowany
Garbage Collector
, który
bardzo
ułatwia zarządzanie zasobami. Składnia Golang’a i budowa kodu nad wyraz przypomina to co znamy z JavaScriptu. Nie ma tu klas, ponieważ byty, które przyjdzie nam zadeklarować, to
instancje
struktur z przypisanymi do ich typów metodami – czyli deklarujemy typ jakiejś struktury, a następnie przypisujemy do jej typu różne metody. Przypomina to trochę tworzenie klasy ze zmiennymi, ale bez metod w C#, a następnie dodanie do tej klasy
metod rozszerzeń
. W Go można także tworzyć
literały struktur
, które bardzo przypominają
literały obiektów
z JavaScriptu. Konstruktorów i destruktorów tu nie ma, ale możliwa jest ich sztuczna implementacja poprzez funkcje czy też, jak już wspomniałem, metody przypisane do typów struktur z wykorzystaniem instrukcji
defer
. Obiektowość w Golangu realizowana jest za pomocą interfejsów.
Go do bólu ułatwia również zrównoleglanie wywołań. Nie trzeba zajmować czasu na wątki, rezerwacje zasobów, mutexy i resztę tego tałatajstwa. Zamiast tego Golang oferuje nam tzw. „goroutines” (które pozwalają na asynchroniczne uruchomienie danej funkcji poprzez dodanie przed jej wywołaniem instrukcji
go
) oraz daje nam kanały, które w bardzo dużym uproszczeniu działają jak wskaźniki. Możesz coś do nich wrzucić w jednym procesie i odczytać w innym. Go wspiera UTF-8, więc nie ma żadnych problemów z polskimi znakami.
Jeżeli doszedłeś/aś do tego etapu, to prawdopodobnie przekonał Cię mój wstęp. Bardzo mnie to cieszy. Teraz pokażę Ci jak zainstalować Golanga. Zrealizuję to w formie instrukcji.
cmd
i wciśnij enter) i wpisz
go version
. Jeżeli pokazuje Ci się podobna informacja do mojej, oznacza to, że wszystko jest okej.
Wiesz już co to Go i potrafisz go poprawnie zainstalować. Czas napisać pierwszy program!
Pamiętasz jak napisałem, że zamieszczę parę skryptów do zautomatyzowania sobie pracy? Oto one:
goCreate.bat nazwaProjektu
– służy do tworzenia nowych projektów
goPackage.bat nazwaPaczki
– tworzy nowe paczki
goHere.bat
– kiedy jesteś w folderze projektu i uruchomisz ten skrypt, projekt będzie gotowy do pracy, a kompilator będzie widział wszystkie twoje pliki.
createGoFile.bat
– goPackage i goCreate wykorzystują go do tworzenia potrzebnych plików.
Wrzuć te pliki do folderu z twoimi skryptami (jeżeli takiego nie masz, stwórz go), a następnie dodaj ścieżkę do tego folderu do zmiennych środowiskowych („PATH”).
Projekty w Golangu należy zapisywać projekty w specjalnej strukturze z folderów (więcej tutaj ). Ręczne tworzenie owej struktury za każdym razem jest niewygodne i może sprawiać problemy początkującym w Go.
Aby stworzyć projekt otwórz konsolę i wpisz
goCreate "tutaj nazwa projektu"
(możesz to zrobić poprzez przytrzymanie shiftu i wciśnięcie prawego klawisza myszy, a następnie wybranie opcji „Otwórz okno polecenia tutaj”). Gdy to zrobisz, wpisz
go install
i voilà, napisałeś Hello World w golang. Czy napewno? No nie do końca. Zrobiły to za Ciebie moje skrypty, jednak zapewne widzisz, że w folderze /src/ powstał folder główny projektu wraz z plikiem main.go. Tak jak w innych językach programowania ten plik steruje całym programem. Zawarta jest w nim funkcja main, która wywoływana jest jako pierwsza.
Przyjrzyjmy się strukturze naszego pliku. Na początku pliku zawsze opisane jest, do jakiego pakietu należy ten plik. Pakietów może być wiele. To coś jak przestrzenie nazw w C++ i C#. Deklaruje je się po prostu pisząc nazwę pakietu. Należy zapamiętać jedynie by zawsze trzymać pliki z danego pakietu w folderze takim jaka jest nazwa jego pakietu. Czyli, gdy dla pliku X.go zadeklarowany jest pakiet Y, to należy umieścić pliki, które mają zadeklarowany ten pakiet w folderze o nazwie Y. W przeciwnym wypadku można napotkać na problemy.
W środku zapisane są importy. W naszym pliku jest tylko jeden import –
import fmt
. Import to instrukcja
preprocesora
, która wkleja nam po prostu kod z danego pakietu (tak samo jak słówko „include” w C++ albo „using” w C#). Pakiet „fmt” to główny pakiet Input/Output języka Go. Coś jak
iostream
.
Na końcu jest już tylko sama funkcja main. Wygląda na bardzo prostą. Nie ma zapisanego typu, który zwraca. Między klamrami jest jedynie instrukcja
fmt.Println("Hello World")
. Ma ona za zadanie wypisać tekst na ekranie. Zawsze, gdy chcemy wywołać funkcje z danego pakietu, to nazwę funkcji należy poprzedzić nazwą pakietu i operatorem wyłuskania (kropki). Po skompilowaniu i uruchomieniu program wypisuje na ekranie „Hello World”.
Jak widać Golang to bardzo prosty i intuicyjny język. Nie miałem zamiaru nauczyć Cię go tu całego, a jedynie pokazać Ci namiastkę tego jak on wygląda w praktyce i co on potrafi. Moim zdaniem jest to świetny język nawet na start i warto się go nauczyć. Nie jest trudny do opanowania i do użytkowania. Warto też się go nauczyć chociażby dlatego, że na każdej platformie ten sam kod Golanga kompiluje się i działa tak samo, a tych platform jest sporo. Posiada on ogrom własnych bibliotek, a w dodatku społeczność, która go rozwija tworzy cały czas nowe.
Jeżeli chciałbyś/chciałabyś dowiedzieć się więcej lub nauczyć się tegoż wspaniałego języka programowania, to polecam Ci tą stronę.
]]>