Nauka Go - Dziennik pokładowy #1

Kamil Powroźnik

2019-05-13T21:40+02:00 | 5 min

Jako programista lubię testować nowe narzędzia czy też języki. Spowodowane jest to chęcią rozwoju, poszerzania swoich horyzontów i umiejętności. Kiedyś również chciałbym zostać fullstackiem, dlatego znajomość języka, który umożliwi mi postawienie backendu aplikacji jest wymagana. Od kilku dni moje zainteresowanie przykuł język o charakterystycznym znaku rozpoznawczym i nazwie.

Poznajcie Go!

Go jest językiem kompilowanym oraz silnie typowanym (jednak o typach za moment) stworzonym przez architektów z firmy Google. Jest bardzo wydajny, a jego kompilacja przebiega bardzo szybko (szczególnie w porównaniu do C++). Kolejną cechą jest to, że zawiera dużo bibliotek standardowych, dlatego zewnętrzne paczki mogą nam nie być w ogóle potrzebne.

Czego potrzebujemy, aby zacząć?

Wystarczy instalacja kompilatora, który znajdziesz na oficjalnej stronie języka https://golang.org/

kompilator dostępny jest na wszystkie platformy

W moim przypadku następnym krokiem była również instalacja wtyczki przeznaczonej dla języka go o nazwie Go

Witaj świecie!

Składnia go jest bardzo prosta - przypominająca pythona. Po przeczytaniu tego posta polecam przejście przez a tour of go, aby poznać całą składnie i zobaczyć jego prostotę. Teraz napiszmy pierwszy program w tym języku.

Pierwszym krokiem będzie utworzenie pliku o nazwie hello.go w dowolnym katalogu, a jak ma on wyglądać?

package main
import "fmt"

func main() {
  fmt.Println("Witaj świecie!")
}

A teraz po kolei omówmy kod krok po kroku. Go pozwala nam dzielić program na mniejsze paczki (coś jak moduły w JavaScript), a główny plik powinien zaczynać się słowami package main.

Więcej o paczkach opowiem w następnym poście. Przejdźmy teraz dalej, do wyrażenia import "fmt" - jest to import standardowej paczki, która pozwoli nam korzystać że strumienia I/O naszej konsoli.

Dalej możesz zobaczyć deklaracje głównej funkcji programu. Jak widzisz gdyby nie skrócone słowo kluczowe func składnia byłaby identyczna jak w JavaScript. W ciele funkcji możemy dostrzec wywołanie metody Println z paczki fmt. Jak już wcześniej pisałem, paczka ta pozwala nam korzystać ze strumienia I/O, a metodą Println wyświetlimy nasz wynik w konsoli.

Przetestujmy program. Wystarczy do tego wywołanie w konsoli polecenia

go run hello.go

Eureka, it's working!

Wróćmy do typów

Jak pisałem na początku, go jest językiem silnie typowanym, który oferuje nam

  • dla wartości tekstowych typ string
  • dla wartości logicznych typ bool
  • dla wartości numerycznych typy int8, uint8 (byte), int16, uint16, int32 (rune), uint32, int64, uint64, int, uint, uintptr, float32, float64, complex64, complex128

Deklarując zmienną trzeba podać jej typ, jednak nie na początku tak jak dzieje się to w językach typu C lub C++, a na końcu deklaracji.

var name string

Przypisanie wartości do zmiennej odbywa się tak jak w większości języków za pomocą znaku =

name = "John"

Czy mówiłem już, że podawanie typu nie jest konieczne? Mowa tu o specjalnym operatorze i tak jeśli chcemy zadeklarować zmienną numeryczną możemy to wykonać w ten sposób

age := 24

Fajnie, prawda? Dzięki temu zapisowi zmiennej age zostanie przypisana liczba 24 wraz z odpowiednim typem.

Pętle

W go mamy dostępną tylko jedną pętlę for, jednak możemy wykorzystać ją na wiele sposobów. Oprócz standardowej konstrukcji

for i := 0; i < 10; i++ {
	fmt.Println(i)
}

Możemy między innymi stworzyć pętle while

i := 0
for i < 10 {
	fmt.Println(i)
	i++
}

still working, nice!

Instrukcje warunkowe

W go do dyspozycji mamy standardowe instrukcje warunkowe takie jak if oraz switch. Ich konstrukcja wygląda następująco

if i < 10 {
	fmt.Println("Small")
} else {
	fmt.Println("Big")
}

animal := "Dog"

switch animal {
case "Cat":
	fmt.Println("Miaauu")

case "Dog":
	fmt.Println("Woof woof")
default:
	fmt.Println("Are You an animal?")
}

W następnym wpisie porozmawiamy o złożonych strukturach danych, mam nadzieje, że spodobało Ci się to krótkie wprowadzenie. Daj znać w komentarzu! 😃


Hej, ta strona wykorzysuje pliki cookies, localStorage, sessionStorage oraz dane osobowe do celów analitycznych.