mały|Gryzoń z rodziny gofferowatych jest oficjalną maskotką języka Go Go (często nazywany także golang) – wieloparadygmatowy język programowania opracowany przez pracowników firmy Google: Roberta Griesemera, Roba Pike’a oraz Kena Thompsona. Łączy w sobie łatwość pisania aplikacji charakterystyczną dla języków dynamicznych (np. Python, Lisp), jak również wydajność języków kompilowanych (np. C, C++).

Dostępny jest kompilator na platformę x86, x64 i ARM o nazwie go. Został również stworzony kompilator na bazie GNU Compiler Collection – gccgo.

Generyki Brak wsparcia dla programowania generycznego we wczesnych wersjach Go spotkał się z dużą krytyką. Projektanci wyrazili otwartość na programowanie generyczne i zauważyli, że wbudowane funkcje w rzeczywistości są generyczne pod względem typów, ale traktowane jako przypadki specjalne. Rob Pike nazwał to słabością, która mogłaby zostać w przyszłości zmieniona.

W sierpniu 2018 roku główni współtwórcy Go opublikowali wstępne projekty dotyczące programowania generycznego i obsługi błędów, prosząc użytkowników o przesyłanie opinii. Jednak propozycja dotycząca obsługi błędów została ostatecznie porzucona.

W czerwcu 2020 roku opublikowano nowy projekt dokumentu, który dodawał do Go niezbędną składnię umożliwiającą deklarowanie generycznych funkcji i typów. Udostępniono narzędzie do translacji kodu, go2go, aby umożliwić użytkownikom wypróbowanie nowej składni, wraz z wersją internetowego Go Playground obsługującą generyki.

Ostatecznie generyki zostały dodane do Go w wersji 1.18, wydanej 15 marca 2022 roku.

Przykłady

Hello World Przykładowy program (Hello world) napisany w Go:package main

func main() { println("Hello, World") }

Współbieżność package main

import ( "fmt" "time" )

func wordPrinter(word string, n int) { for range n { fmt.Println("Podaje słowo: ", word) time.Sleep(time.Second)

func main() { go wordPrinter("pierwsze", 3) time.Sleep(500 * time.Millisecond) go wordPrinter("drugie", 4) time.Sleep(5 * time.Second) }

Powyższy program demonstruje wykorzystanie gorutyn – lekkich wątków współbieżnych w języku Go. Funkcja wordPrinter przyjmuje jako argumenty ciąg znaków (word) oraz liczbę powtórzeń (n), a następnie wypisuje podane słowo n razy, wprowadzając jednosekundowe opóźnienie między iteracjami. Program uruchamia dwie gorutyny, które działają równolegle, pokazując mechanizm współbieżnego wykonywania zadań.

Generyki package main

func greater[T int | float64 | string](v1 T, v2 T) bool { return v1 > v2 } func main() { println(greater(1.1, 1.2)) println(greater(1, 2)) println(greater("a", "b")) println(greater("b", "a")) }Funkcja greater[T] przyjmuje parametr typu T, ograniczony do int, float64 i string, umożliwiając porównywanie wartości tych typów. Dzięki generykom kod jest elastyczny i wielokrotnego użytku, eliminując konieczność pisania osobnych funkcji dla każdego typu.

Przypisy

Linki zewnętrzne

Strona domowa języka Historia wersji (ang.) Tutorial Go (ang.) Lista popularnych pakietów

Kategoria:Google Kategoria:Języki programowania Kategoria:Oprogramowanie na licencji BSD Kategoria:Produkty Google