poniedziałek, 27 lutego 2012

Golang drugie starcie

Dlaczego od razu drugie?
Pierwsze było w 2009, kiedy ogłoszono wydanie Golang. Zafascynowany (zresztą do dziś) Pythonem, przeczytawszy, że oferuje kodowanie łatwe jak w językach z kaczym typowaniem  z szybkością C++. Oczekiwałem Pythona kompilowanego do kodu maszynowego. Po co? nie wiem. Kiedy okazało się, że jest to język projektowany do zupełnie innych celów, po jakimś czasie dałem sobie spokój.

Minęło lat parę i przez przypadek trafiłem znów na stronę języka i stwierdziłem, że zobaczę co tam nowego. Starszy i bogatszy o parę lat doświadczenia, epizody z różnymi językami min erlangiem, ujrzałem:


  • język statycznie typowany
  • mimo to o dużej ekspresji
  • z wbudowanymi w język elementami do programowania współbieżnego, rodem z erlang
  • o bardzo szybkim kompilatorze
  • w którym mogę kompilować pod Linux i Windows
  • bez hierarchii dziedziczenia, ale z osadzaniem typów
  • o bogatej bibliotece standardowej
  • w którym można pisać i obiekty i funkcje
  • funkcje są obiektami 
Czyli podsumowując, język wręcz idealny do pisania backendu. 

Kilka słów

Organizacja kodu:

W go kod zorganizowany jest w pakiety. Każdy plik powinien zaczynać się deklaracją nazwy pakietu. Pakiet może się składać w wielu plików, które nie koniecznie muszą się znajdować w tym samym katalogu. Daje to pewną dowolność w organizowaniu źródeł. Ograniczeniem jest to, że w jednym pliku może znajdować się tylko jedna definicja pakietu.
Jeśli chcemy "wyeksportować" czy to zmienną, stałą czy też funkcje poza pakiet. Czyli aby była widoczna poza pakietem należy jej nazwę rozpocząć z wielkiej litery. Ot co.

Przykład:

---------------
package pumba

import (
    "fmt"
)

func Hello() {
    fmt.Println("Hakuna matata")
}
---------------

W ten sposób zdeklarowaliśmy pakiet pumba do którego zaimportowaliśmy pakiet fmt i wyeksportowaliśmy funkcję Hello, która nie przyjmuje parametrów i nic nie zwraca.


Aby zapoznać się z podstawami polecam tutoriale www.golang.org.