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ć
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
Powiązane tematy
- Programowanie
- Programowanie
- Języki programowania
O autorze
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ć