Język programowania Go bardzo ewoluował od czasu jego pierwszej publikacji w 2009 roku. Go 1.18 było bardzo oczekiwanym wydaniem ze względu na wsparcie dla generyków i wielu innych ważnych aktualizacji.

Go wydana wersja 1.18 w marcu 2022 roku. Oto podsumowanie najważniejszych zmian.

Wsparcie dla generyków

Programowanie ogólne umożliwia pisanie funkcji, które mogą akceptować i zwracać bardziej elastyczne typy.

Przed obsługą generyków trzeba było jawnie określić typy parametrów i typy zwracane. Najprostsza forma generyków pozwala określić parametry niewpisane:

funkcjonowaćDrukuj cokolwiek[T każdy](rzeczT) {
fmt.Drukuj(rzecz)
}

Ale leki generyczne oferują znacznie więcej mocy niż tylko to. Dla parametrów można zadeklarować prawie dowolną kombinację i szczegółowość typu. Na przykład możesz użyć ograniczenia pakiet do napisania funkcji, która działa na dowolnej wartości, którą możesz zamówić. Obejmuje to int, floaty i ciągi. Oto przykład demonstrujący składnię:

import "golang.org/x/exp/constraints"

funkcjonować

instagram viewer
Maks.[Ograniczenia T. Zamówione](Wejście[]T) (maksT) {
dla _, v := wejście zakresu {
jeśli v > maks. {
max = v
}
}

zwrócić maks
}

Zauważ, że ta funkcja używa typu ogólnego, ograniczenia. Zamówione, aby zadeklarować jego parametr i typ zwracany.

Generyki zapewniają niepewność i elastyczność w kodzie. Propozycja i zmiany Generics są kompatybilne wstecz.

Testowanie rozmycia

Fuzzing to technika testowania oprogramowania która weryfikuje program z błędnymi, nieoczekiwanymi lub nieprzewidywalnymi danymi.

ten testowanie Pakiet wprowadza fuzzing w wersji 1.18, więc aby zdefiniować fuzz, musisz zaimportować go z biblioteki standardowej:

import "testowanie"

Po zaimportowaniu testowanie pakiet, możesz przekazać identyfikator typu *testy. F do funkcji testowej.

funkcjonowaćfunkcja testowa(f *testowanie. F) {
// Twój kod
}

Fuzzing generuje parametry wejściowe do testowania kodu. Wynik fuzzingu jest nieprzewidywalny, ponieważ dane wejściowe nie są zdefiniowane przez użytkownika. Fuzzing powinien pomóc w pisaniu lepszych testów kodu i łapaniu błędów, o których istnieniu nie wiedziałeś.

Idź Wsparcie Workspace

Obszary robocze to katalogi podobnego kodu źródłowego, które składają się na projekt lub większą jednostkę. Obszary robocze ułatwiają zarządzanie kodem i debugowanie go, grupując podobny kod na podstawie funkcjonalności.

Konwencjonalnie dzielisz projekty Go na kod źródłowy (src) i pliki wykonywalne (kosz). Łańcuch narzędzi Go buduje kod źródłowy z pierwszego na pliki wykonywalne w drugim. Obszary robocze Go umożliwiają programistom pracę z wieloma obszarami roboczymi przy użyciu modułów Go z określonym modułem głównym.

Polecenie do tworzenia obszarów roboczych to:

$ idź do pracy <Komenda>

Użyj praca polecenie z podkomendami takimi jak:

  • w tym → tworzy przestrzeń roboczą we wskazanym katalogu.
  • posługiwać się → dodaje nowy moduł do go.work, pliku go workspace.
  • edytować → edytuje plik obszaru roboczego go.
  • synchronizacja → synchronizuje zależności z listy kompilacji do modułów obszaru roboczego.

Włączenie miejsc pracy do wyjazdu zwiększyłoby produktywność zgodnie z planem przy opracowywaniu języka.

Ulepszenia w wydajności

Udać się wersja 1.18 obsługuje teraz ARM64 Apple M1 i 64-bitowy PowerPC w konwencji wywoływania ABI. Powoduje to ponad 10% wzrost wydajności procesora dla użytkowników tych urządzeń.

Zadeklarowane i nieużywane zmienne w funkcjach są teraz rejestrowane jako błędy podczas kompilacji programu.

ten idź budować polecenie, wraz z innymi powiązanymi poleceniami, obsługuje -asan flaga, która obsługuje współdziałanie z C/C++. Pomoże to programistom Go używać programów Go z programami C i C++.

Inne ważne aktualizacje

ten idź weź polecenie nie instaluje już pakietów w trybie uwzględniającym moduły, co jest dużą zmianą od kiedy ty zacząłem od Go. ten idź zainstalować polecenie zastępuje Dostawać aby dostosować zależności modułów w różnych obszarach roboczych.

Ponieważ moduł sprawdzania typu obsługuje teraz typy generyczne, komunikaty o błędach mogą być rejestrowane inaczej niż w poprzednich wersjach.

Czas potrzebny na kompilację programów może być wolniejszy w wersji 1.18. Ale nie wpłynie to na czas wykonania po skompilowaniu programu przez Go.

Pełne informacje o wszystkich najnowszych zmianach można znaleźć w informacjach o wydaniu dla Przejdź do 1.18.

Idź 1.18 ma kilka różnorodnych dodatków

Korzystając z Go 1.18, możesz teraz pisać ogólny kod, efektywnie testować za pomocą fuzzingu i przełączać się między modułami Go za pomocą obszarów roboczych. Możesz nawet napisać kod, który działa w połączeniu z programami C i C++.

Czy warto dziś uczyć się Golanga?

Czytaj dalej

UdziałĆwierkaćUdziałE-mail

Powiązane tematy

  • Programowanie
  • Programowanie
  • Języki programowania

O autorze

Personel MUO

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować