Go to relatywnie nowy, statycznie typowany język programowania od Google. Go został zaprojektowany tak, by umożliwić wysokowydajne i łatwe programowanie współbieżne.
W przypadku mikrousług wąskim gardłem nie jest moc obliczeniowa, a przepustowość i komunikacja między komponentami. W Go zarządzanie komunikacją wbudowane jest w sam język, co powoduje, że tego typu projekty znacznie łatwiej jest skalować.
Dzięki tym zaletom doskonale nadaję się do tworzenia aplikacji natywnych w chmurze (native cloud application (NCA)), mikroserwisów czy systemów rozproszonych (ang. distributed systems).
Zaletą Go jest również szybka kompilacja, która zazwyczaj daję nam gotową do uruchomienia binarkę, więc deployowanie aplikacji czy pisanie skryptów w Go jest naprawdę proste i szybkie.
Go jest wykorzystywany przez wiele dużych firm m.in.:
Większą listę aplikacji i firm wykorzystujących Go można zobaczyć tu Go - Aplikacje
Github to system kontroli wersji. Możesz znaleźć tam projekty open source w każdej technologii. Zobacz jakiego typu projekty wykorzystują język Go oraz jak wygląda Go od strony kodu. Zwróć uwagę na pliki z rozszerzeniem .go.
1# | awesome-go | 124,898 |
2# | go | 121,213 |
3# | kubernetes | 108,396 |
4# | frp | 82,169 |
5# | ollama | 77,560 |
6# | gin | 76,794 |
7# | hugo | 73,651 |
8# | moby | 68,146 |
9# | syncthing | 62,140 |
10# | fzf | 62,020 |
Go posiada wiele zautomatyzowanych rozwiązań, które w innych językach muszą zostać zaprogramowane ręcznie przez twórcę.
Go łączy w sobie łatwość pisania aplikacji charakterystyczną dla języków dynamicznych (np. Python), jak również wydajność języków kompilowanych (np. C, C++). Go w przeciwieństwie do np. Pythona ma typowanie statyczne, które w przypadku projektów zawierających tysiące linii kodu ma duże znaczenie dla czytelności i dalszego utrzymania projektu.
Jak większość wysokopoziomowych języków jest memory safe i posiada garbage colector, więc nie trzeba się martwić zarządzaniem pamięcią.
Język Go jednak nieco różni się od innych języków obiektowych:
Jak widać, nie ma w nim wielu aspektów programowania obiektowego, co dla niektórych może się wydawać minusem, jednak pod względem nauki jest to na pewno uproszczenie.
Go jest idiomatyczny, tzn. często jest tylko jeden sposób na wykonanie danej rzeczy, co może być zarówno plusem, jak i minusem. Go ma także wbudowanych wiele mechanizmów, które wymuszają na programistach stosowanie się do dobrych praktyk. Jest to na pewno plusem dla początkujących, bo trudniej sobie strzelić w stopę. Dzięki takim rozwiązaniom czytelność i porządek w kodzie przestają zależeć od kultury programisty, a przesuwają się w stronę zasad konstrukcji języka.
Dzięki tzw. gorutynom (ang. goroutines) i kanałom wbudowanym w Go, programowanie współbieżne jest dużo prostsze.
Według TIOBE index, język Go jest na 7 pozycji pod względem popularności. W ubiegłym roku był na pozycji 13.
Na Stack Overflow jest 13 najczęściej tagowanym językiem z 73,492 zapytaniami.
Na Github zajmuje 8 pozycję z liczbą 398,899 projektów, z których 3,025 ma więcej niż 1000 gwiazdek.
Jeśli chodzi o organizowane spotkania to według Meetup.com jest to 8 co do wielkości społeczność z liczbą 217 grup, w skład których wchodzi 180,063 członków na całym świecie. W Polsce mamy odpowiednio 4 grup, w skład których wchodzi 2,054 członków.
Popularność Go w ostatnich latach cały czas rośnie, a fakt, że został stworzony i jest rozwijany przez pracowników Google dobrze mu wróży. Jego ostatnia wersja 1.22.4 została wydana 4 czerwca 2024. Wydaje się, że to dobry kandydat do nauki na najbliższe lata.
(W języku polskim niżej)
Go - The Complete Guide
Learn Go ("Golang") from the ground up & in great depth by building multiple demo projects, incl. a REST API
Czas trwania: 15.5 total hours 15719 zapisanych uczestnikówGo: The Complete Developer's Guide (Golang)
Master the fundamentals and advanced features of the Go Programming Language (Golang)
Czas trwania: 9 total hours 169872 zapisanych uczestnikówLearn How To Code: Google's Go (golang) Programming Language
The Ultimate Comprehensive Course - Perfect for Both Beginners and Experienced Developers
Czas trwania: 29 total hours 150059 zapisanych uczestnikówBuilding Modern Web Applications with Go (Golang)
Learn to program in Go from an award winning university professor
Czas trwania: 29.5 total hours 33239 zapisanych uczestnikówProgramowanie w języku Go - od A do Z
Rozwijaj umiejętności, które liczą się na rynku pracy: odkryj techniki wysokowydajnego kodowania w języku Go (Golang)
Czas trwania: 10 total hours 91 zapisanych uczestników