devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
6 minut

Kurs golang #1: Intro


29.04.2019

Golang staje się coraz bardziej popularny. Kusi szybkością, prostotą składni oraz skalowalnością. To plusy, koło których bez wątpienia nie można przejść obojętnie.

Jestem Bartek i zajmuję się programowaniem od prawie 10 lat. Bloguję oraz organizuję Meetup w Krakowie na temat golang. W tym kursie przybliżę Wam składnię języka oraz niektóre mechaniki działające pod spodem, a także pokażę, jak się z niego korzysta w prawdziwych aplikacjach, nie tylko w tutorialach. Zanim jednak przejdziemy do samego języka, porozmawiajmy o jego zastosowaniu.

Zastosowanie

Golang jest kompilowanym językiem programowania. To znaczy, że nie posiada żadnego interpretera – tak jak PHP, Python czy Ruby – oraz nie działa na wirtualnej maszynie jak C# czy Java. Kompiluje się go do języka maszynowego, co pozwala osiągnąć bardzo dużą wydajność. W przeciwieństwie do C oraz C++, które też są kompilowane, golang wyróżnia się tym, że posiada Garbage Collector (GC).

Garbage Collector to (w wielkim skrócie) metoda automatycznego zarządzania dynamicznie przydzielaną pamięcią. Dzięki temu nie musimy myśleć o zwalnianiu pamięci za każdym razem, gdy tworzymy nową zmienną dynamicznie. Pomaga to w uniknięciu – często bardzo trudnych do znalezienia – wycieków pamięci. Możemy więc zapomnieć o takim kodzie jak poniżej:

int *p = new int;
float *r = new float(75.25); 
int *q = new int[n]; 

// freed the allocated memory 
delete p; 
delete r; 
  
// freed the block of allocated memory 
delete[] q; 

 

(Więcej o Garbage Collectorze posłuchasz w tym odcinku podcastu DevTalk).

Gdzie golang sprawdza się najlepiej? Bez wątpienia jego mocną stroną są zastosowania w infrastrukturze. Coraz więcej aplikacji mających za cel wspomaganie infrastruktury bądź programistów jest pisanych właśnie za pomocą tego języka. Przykładem może być choćby Docker.

Instalacja oraz IDE

Instalacja kompilatora jest stosunkowo prosta. Na systemach z rodziny Linux/Unix wystarczy skorzystać z managera zależności.

brew install go #macOS
apt install golang #ubuntu

W przypadku środowiska Windows trzeba wykonać kilka kroków:

  1. pobrać instalator ze strony https://golang.org/dl/,
  2. dokonać instalacji, postępując zgodnie z instrukcjami,
  3. stworzyć folder, w którym będą umieszczane aplikacje. Może to być np. C:\Projects\Go,
  4. ustawić zmienną środowiskową GOPATH, tak aby wskazywała na ten właśnie folder.

Jako edytor polecam GoLand, Sublime Text bądź Atom. Oczywiście każdy inny program, który pozwala edytować pliki w kodowaniu UTF-8, się sprawdzi, jednak największą wygodę oferuje IDE od IntelliJ.

Pierwsze kroki

Zaczniemy od stworzenia katalogu z projektem. Folder ten powinien znajdować się wewnątrz $GOPATH/src. Oczywiście proste przykłady będą działać w każdym innym miejscu, lecz niektóre managery zależności mogą wtedy nie funkcjonować. Stwórzmy więc nowy folder $GOPATH/src/gocourse/first, a następnie plik main.go.

Pierwszy program

Umieść w pliku main.go zawartość listingu poniżej. Omówimy teraz pokrótce każdą z linijek. Linia nr 1 zawiera nazwę pakietu, w którym operujemy. Nazwaliśmy ten pakiet main, ponieważ tylko ten pakiet może zostać uruchomiony. Linia nr 3 zawiera import zewnętrznego pakietu, jakim jest fmt. Pakiet ten zawiera m.in. zestaw funkcji formatujących tekst oraz operujących na standardowym wejściu/wyjściu.

package main

import "fmt"

func main() {
	fmt.Println("Hello world, gophers!")
}

Dalej znajduje się funkcja main(), od której zaczyna się wykonywanie programu. W jej wnętrzu znajdziemy tylko jedną instrukcję odpowiedzialną za wyświetlanie na standardowym wyjściu (terminalu) napisu „Hello world, gophers!”.

Uruchomienie programu

Aby uruchomić nasz program, musimy wykonać jedną z kilku operacji.
Jeżeli korzystamy z GoLand od IntelliJ, możemy po prostu kliknąć zielony trójkąt, taki jak na obrazku poniżej. W tym przypadku nasze IDE wykona za nas polecenie, które opiszę za chwilę, i wyświetli wbudowany terminal z wynikiem działania programu.

Innym sposobem jest użycie linii poleceń. I tutaj możemy wybrać jedną z dwóch dróg: zbudować aplikację i uruchomić plik binarny albo kazać kompilatorowi wykonać obie operacje za nas za jednym razem.
Budowanie jest bardzo proste – wystarczy wykonać poniższe polecenie, a naszym oczom pokaże się nowy plik o nazwie main(.exec), który możemy uruchamiać jak każdy inny program.

go build main.go
./main

Drugie polecenie wykonuje obie te operacje za jednym razem, lecz nie pozostawia po sobie pliku binarnego. Jednym słowem buduje program oraz go uruchamia w locie.

go run main.go

Podsumowanie

Gratuluję, zostałeś gopherem! Dzisiaj skonfigurowałeś swoje środowisko pracy, napisałeś pierwszy program w języku golang oraz nauczyłeś się go uruchamiać. Jak być może zauważyłeś, drogi Czytelniku, kod źródłowy przypomina trochę język C/C++. I rzeczywiście pod wieloma względami jest bardzo podobny, lecz golang ma prostszą składnię oraz zestaw mechanizmów, które ułatwiają programowanie. To właśnie one zostaną tematem kolejnych artykułów.

Więcej moich artykułów (nie tylko związanych ściśle z Go) znajdziesz na moim blogu developer20.com.

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit
Notify of
PiotrB
PiotrB

Coś się zmieniło (punkt 2 uznaje za najmniej istotny) od 2015:
https://kaushalsubedi.com/blog/2015/11/10/golang-sucks-heres-why/
?

„kod źródłowy przypomina trochę język C/C++” – to są zdecydowanie dwa języki, szczególnie w użytym kontekście. O ile użycie obiektów przypomina C++, to już definiowanie klas jest wg mnie zupełnie inne (przez co na przykład mi nie podeszło).

Artur
Artur

Kiedy można się spodziewać kolejnego odcinka?

Tobiasz
Tobiasz

Drobna uwaga – Goland to IDE od JetBrains, nie Intelij, które jest po prostu IDE od tej samej firmy – swoją drogą, darmowa wersja Intelij posiada całkiem fajną wtyczkę do Go, która pozwala na wygodną pracę – śmiało mogę polecić. ;)

Ciężko mi coś powiedzieć na temat 1 kursu – same podstawy jakby nie patrzeć. Nie zgodzę się, że na podstawie Hello World’a w Go można stwierdzić, że to język podobny do C czy C++. Koncepcje języka przypominają stare, dobre C i filozofię Unix’a jak najbardziej – ale nie sama składnia. W przeciwnym razie moglibyśmy tak powiedzieć o każdym języku. :)

Artur
Artur

Oczywiście, Bartek, że podstawy są najważniejsze i powinny być na początku.
Nie byłem pewny, jak pisałem swój post, czy chciałbyś się nimi zajmować, bo wielu autorów uważa, że skoro jest A Tour of Go, to nie warto omawiać podstaw.
Będę czekał na każdy odcinek i zamierzam czytać wnikliwie.
Go jest pomijany w polskiej części internetu.

Moja książka

Facebook

Zobacz również