Grow with AppMaster Grow with AppMaster.
Become our partner arrow ico

Moduły Go i zarządzanie zależnościami

Moduły Go i zarządzanie zależnościami

Wprowadzenie do zarządzania zależnościami w Go

Zarządzanie zależnościami jest krytycznym aspektem każdego projektu programistycznego, ponieważ pomaga zarządzać wersjami bibliotek i pakietów, na których opiera się projekt. W Go (Golang), zarządzanie zależnościami zapewnia, że projekty Go są powtarzalne i łatwe w utrzymaniu, ułatwiając rozwiązywanie problemów związanych z wersjonowaniem, utrzymując kompatybilność z innymi pakietami i usprawniając ogólny proces rozwoju.

Software development process

Przed Go Modules zarządzanie zależnościami w Go było mniej usprawnione. Programiści często korzystali z narzędzi takich jak dep, glide lub govendor do zarządzania zależnościami. Chociaż narzędzia te były pomocne, nie były one częścią oficjalnego projektu Go, a tym samym powodowały tarcia w przyjmowaniu Go jako języka dla niektórych programistów.

Era modułów Go

W 2018 roku zespół Go wprowadził pojęcie "modułów", nowego standardu zarządzania zależnościami w projektach Go. Moduły to zbiory powiązanych pakietów, które są wersjonowane razem, zapewniając wszystkie niezbędne zależności dla bazy kodu. Wraz z wprowadzeniem Go Modules w Go 1.11, zarządzanie zależnościami stało się prostsze, bardziej wszechstronne i oficjalnie wspierane przez projekt Go. Moduły Go wprowadziły takie funkcje jak

  • Wersjonowanie zależności przy użyciu Semantic Versioning (SemVer)
  • Uproszczone polecenia zarządzania zależnościami (np. go get, go mod tidy)
  • Automatyczne generowanie pliku manifestu(go.mod) zawierającego szczegółowe informacje o zależnościach
  • Automatyczne pobieranie i buforowanie wymaganych zależności

Dzięki Go Modules nie jest już wymagane umieszczanie kodu w katalogu $GOPATH, co wcześniej było ograniczeniem w rozwoju Go. Ten nowy system umożliwia bardziej elastyczną strukturę projektu, ułatwiając pracę nad projektami Go podczas przełączania się między różnymi repozytoriami.

Konfigurowanie projektu modułu Go

Rozpoczęcie pracy z modułami Go jest proste. Wykonaj poniższe kroki, aby skonfigurować nowy projekt Go Modules.

  1. Najpierw upewnij się, że zainstalowałeś Go w wersji 1.11 lub nowszej w swoim systemie. Możesz sprawdzić wersję Go, uruchamiając go version w terminalu.
  2. Przejdź do wybranej lokalizacji i utwórz nowy folder projektu o opisowej nazwie, np. my-go-project.
  3. Przejdź do nowo utworzonego folderu w wierszu poleceń.
  4. Zainicjuj nowy moduł Go, uruchamiając polecenie go mod init, a następnie ścieżkę modułu. Na przykład, możesz uruchomić go mod init github.com/your-username/my-go-project, jeśli zamierzasz hostować projekt na GitHub. Polecenie to generuje nowy plik o nazwie go. mod w folderze projektu.

Plik go.mod jest sercem projektu Go Modules. Zawiera on metadane dotyczące modułu, takie jak jego nazwa, oraz listę wszystkich wymaganych przez niego zależności. Będziesz wchodzić w interakcje z plikiem go.mod przez cały cykl życia projektu Go, aby zarządzać zależnościami. Teraz, gdy projekt Go Module jest już skonfigurowany, możesz zacząć dodawać zależności i zarządzać nimi za pomocą systemu Go Modules.

Zarządzanie zależnościami w modułach Go

Moduły Go zapewniają proste i skuteczne podejście do zarządzania zależnościami projektu. Pozwalają one dodawać, aktualizować lub usuwać określone wersje zależności, pomagając zachować kontrolę nad projektem i jego interakcjami z innymi pakietami. Ta sekcja poprowadzi Cię przez proces zarządzania zależnościami w projekcie Go Modules.

Dodawanie zależności

Aby dodać nową zależność, wystarczy zaimportować żądany pakiet do kodu Go. Na przykład, jeśli chcesz dodać github.com/gorilla/mux do swojego projektu, zaimportuj go w następujący sposób:

import ( "github.com/gorilla/mux" )

Przy następnym uruchomieniu go build lub go test, Go automatycznie pobierze wymagany pakiet, zaktualizuje pliki go.mod i go.sum oraz skonfiguruje projekt do korzystania z określonego pakietu. Alternatywnie można użyć polecenia go get, aby jawnie dodać nową zależność:

go get github.com/gorilla/mux

Spowoduje to nie tylko pobranie pakietu, ale także aktualizację plików go.mod i go. sum projektu.

Aktualizacja zależności

Aby zaktualizować określoną zależność do nowej wersji, użyj polecenia go get, a następnie ścieżki importu pakietu i żądanego numeru wersji:

go get github.com/gorilla/[email protected]

Polecenie to zaktualizuje plik go.mod o nową wersję pakietu i pobierze jego kod źródłowy. Należy pamiętać, że jeśli zaktualizowany pakiet wprowadza przełomowe zmiany, może być konieczne odpowiednie dostosowanie kodu.

Usuwanie zależności

Aby usunąć zależność z projektu, należy najpierw usunąć odpowiednie instrukcje importu z kodu źródłowego. Następnie uruchom polecenie go mod tidy, aby wyczyścić plik go. mod:

go mod tidy

Polecenie to usunie wszelkie nieużywane zależności z pliku go.mod i zapewni, że projekt pozostanie czysty i uporządkowany.

Semantyczne wersjonowanie i moduły Go

Semantic Versioning (SemVer) to powszechnie przyjęty system wersjonowania, który przypisuje unikalne numery wersji do wydań oprogramowania. Wykorzystuje on trzyczęściowy format numeracji: Major.Minor.Patch (np. 1.2.3). W SemVer:

Try AppMaster today!
Platform can build any web, mobile or backend application 10x faster and 3x cheaper
Start Free
  • Poważne zmiany w wersji wskazują na zmiany przełomowe i wymagają ręcznego dostosowania kodu.
  • Drobne zmiany wersji wprowadzają nowe funkcje, zachowując kompatybilność wsteczną.
  • Zmiany wersji poprawek obejmują poprawki błędów i drobne ulepszenia wydajności, również kompatybilne wstecz.

Go Modules zawiera semantyczne wersjonowanie do obsługi wersjonowania zależności, umożliwiając programistom łatwiejsze zarządzanie aktualizacjami, kompatybilnością wsteczną i łamaniem zmian. Podczas określania wersji zależności za pomocą Go Modules można używać zakresów wersji lub określonych numerów wersji. Na przykład: - Aby pobrać najnowszą stabilną wersję pakietu, użyj ścieżki importu pakietu bez numeru wersji: go get github.com/gorilla/mux. - Aby pobrać konkretną wersję, należy dodać numer wersji po symbolu @: go get github.com/gorilla/[email protected].- Aby pobrać najnowszą pomniejszą lub poprawioną aktualizację w ramach określonej wersji głównej, użyj symbolu ^ (karetki): go get github.com/gorilla/mux@^v1.0.0.

Najczęściej używane polecenia modułów Go i ich zastosowania

Oto niektóre z najczęściej używanych poleceń Go Modules i ich scenariusze użycia:

go mod init

go mod initinicjuje nowy projekt Go Modules w bieżącym katalogu. Generuje plik go. mod, który zawiera informacje o module, jego zależnościach i ograniczeniach wersji.

go mod init example.com/myproject

Zastąp example. com/myproject ścieżką modułu.

go get

go get jest wszechstronnym poleceniem używanym do dodawania, aktualizowania lub usuwania zależności. Podaje ścieżkę importu pakietu, opcjonalnie z numerem wersji lub zakresem.

go get github.com/gorilla/[email protected]

To polecenie dodaje lub aktualizuje pakiet github.com/gorilla/mux do wersji v1.8.0.

go mod tidy

go modtidy usuwa nieużywane zależności z pliku go. mod i aktualizuje go, aby odzwierciedlał instrukcje importu w kodzie źródłowym projektu.

go mod tidy

Uruchom to polecenie po usunięciu instrukcji importu dla niechcianych zależności.

go mod graph

go mod graph wyświetla drzewo zależności projektu, pokazując zarówno bezpośrednie, jak i pośrednie zależności w czytelnym formacie. Polecenie to może być pomocne podczas debugowania złożonych zależności.

go mod graph

go mod verify

go modverify sprawdza integralność zależności wymienionych w pliku go. sum. Jeśli suma kontrolna zależności nie zgadza się z zapisaną wartością, polecenie zgłosi błąd.

go mod verify

Rozwiązywanie konfliktów zależności

Konflikty zależności mogą powstać, gdy projekt zależy od wielu pakietów o różnych wymaganiach dotyczących wersji dla współdzielonych zależności. Moduły Go zapewniają wbudowany mechanizm obsługi tych konfliktów za pomocą dyrektyw replace i exclude w pliku go. mod.

Dyrektywa replace

Dyrektywa replace pozwala zmienić wersję modułu na inną lub zmapować ją na lokalną ścieżkę. Może to być przydatne w sytuacjach, w których trzeba przetestować określone wersje, rozwidlone projekty lub lokalne zmiany przed zatwierdzeniem do zdalnego repozytorium. Aby użyć dyrektywy replace, dodaj następującą linię do pliku go. mod:

replace example.com/original/module v1.2.3 => example.com/new/module v1.4.0

Spowoduje to zastąpienie example. com/original/module w wersji v1 . 2.3 przez example .com/new/module w wersji v1.4.0. Można również zastąpić moduł ścieżką lokalną:

replace example.com/original/module v1.2.3 => ../local/path/to/new/module

Dyrektywa exclude

Możesz użyć dyrektywy exclude, aby zapobiec używaniu określonych wersji modułu w projekcie. Jest to przydatne, gdy wiesz, że konkretna wersja ma problemy z kompatybilnością lub luki w zabezpieczeniach. Aby wykluczyć wersję modułu, dodaj następującą linię do pliku go. mod:

exclude example.com/target/module v1.2.3

Pamiętaj, aby uruchomić go mod tidy po zastosowaniu tych zmian, aby zaktualizować plik go.sum i ponownie obliczyć drzewo zależności.

Prywatne moduły Go i zarządzanie repozytorium

Praca z prywatnymi modułami Go i repozytoriami jest podobna do pracy z publicznymi, ale istnieją pewne dodatkowe kroki w celu zapewnienia właściwego uwierzytelniania i prywatności.

Konfiguracja GOPRIVATE

Aby zapobiec wyciekowi ścieżek importu do serwerów publicznych, należy skonfigurować zmienną środowiskową GOPRIVATE. Zmienna ta określa rozdzielaną przecinkami listę wzorców ścieżek importu dla prywatnych repozytoriów.

go env -w GOPRIVATE=example.com/private/path/*

Używanie tokenów dostępu

Aby korzystać z prywatnych repozytoriów, zazwyczaj należy uwierzytelnić się w usłudze hostingu kodu źródłowego, takiej jak GitHub lub GitLab. Utwórz osobisty token dostępu z odpowiednimi uprawnieniami (takimi jak zakres repozytorium dla GitHub). Szczegółowe kroki tworzenia tokenu dostępu można znaleźć w dokumentacji usługi hostingowej. Po uzyskaniu tokenu dostępu skonfiguruj zmienną środowiskową do uwierzytelniania. Użyj odpowiedniej zmiennej środowiskowej w zależności od usługi VCS.

export GIT_TERMINAL_PROMPT=0 export GITHUB_TOKEN=YOUR_ACCESS_TOKEN

Umożliwia to poleceniu go pobieranie i uwierzytelnianie prywatnych repozytoriów jako modułów Go. Jeśli pracujesz z wieloma usługami VCS, możesz skonfigurować indywidualne tokeny dostępu dla każdej z nich, definiując w razie potrzeby oddzielne zmienne środowiskowe.

Try AppMaster today!
Platform can build any web, mobile or backend application 10x faster and 3x cheaper
Start Free

Migracja z poprzednich systemów zarządzania zależnościami

Przed Go Modules istniały różne systemy zarządzania zależnościami, takie jak Dep, glide lub niestandardowe rozwiązania katalogów dostawców. Jeśli nadal korzystasz z tych systemów, nadszedł czas na migrację do Go Modules, aby pozostać na bieżąco i czerpać korzyści z nowoczesnego zarządzania zależnościami Golang. Aby dokonać migracji z poprzedniego systemu zarządzania zależnościami do Go Modules, wykonaj następujące kroki:

  1. Utwórz kopię zapasową oryginalnego projektu, aby w razie potrzeby móc powrócić do poprzedniego stanu.
  2. Usuń wszystkie istniejące pliki zarządzania zależnościami (np. Gopkg.toml lub Gopkg.lock).
  3. Przejdź do katalogu głównego projektu w terminalu i uruchom go mod init, aby utworzyć nowy plik go. mod. Spowoduje to również próbę przekonwertowania poprzedniego pliku zależności, jeśli jest obecny, na wpisy Go Modules.
  4. Uruchom go mod tidy, aby wypełnić plik go.mod zależnościami z poprzedniego systemu. To polecenie zapewnia, że tylko niezbędne pakiety są częścią drzewa zależności.
  5. W tym momencie może być konieczne wprowadzenie zmian w pliku go.mod w celu rozwiązania konfliktów zależności lub wymuszenia określonych wersji. Użyj dyrektyw replace i exclude, aby poradzić sobie z tymi problemami.
  6. Sprawdź, czy projekt nadal się kompiluje i przechodzi testy zgodnie z oczekiwaniami.

Wykonując te kroki, Twój projekt powinien teraz działać z modułami Go, usprawniając zarządzanie zależnościami i czyniąc go bardziej łatwym w utrzymaniu na dłuższą metę. Wszelkie utrzymujące się problemy należy rozwiązać, dostosowując plik go. mod lub sprawdzając ścieżki importu, aby upewnić się, że są one zgodne z prawidłowym formatem.

AppMaster: Przyspieszenie rozwoju aplikacji opartych na Golang

Włączenie modułów Go i najlepszych praktyk zarządzania zależnościami do codziennego przepływu pracy ma kluczowe znaczenie dla zapewnienia łatwego w utrzymaniu i skalowalnego projektu oprogramowania opartego na języku Golang. Ale co, jeśli można przyspieszyć cały proces tworzenia aplikacji, jednocześnie wykorzystując moc Golang?

Warto wspomnieć o AppMaster.io, kompleksowej platformie no-code z naciskiem na generowanie aplikacji backendowych opartych na języku Golang przy użyciu wizualnego środowiska programistycznego. Oprócz aplikacji backendowych, AppMaster umożliwia tworzenie aplikacji internetowych i mobilnych przy użyciu zintegrowanego podejścia zaprojektowanego w celu usprawnienia procesu rozwoju.

Dzięki AppMaster użytkownicy mogą tworzyć modele danych (schemat bazy danych), projektować procesy biznesowe oraz definiować interfejsy API REST i WebSocket endpoints za pomocą wizualnego interfejsu użytkownika. Aplikacje internetowe są tworzone przy użyciu interfejsu " przeciągnij i upuść " wraz z projektantem procesów biznesowych dla w pełni interaktywnego doświadczenia użytkownika. Aplikacje mobilne są projektowane w podobny sposób, z mobilnym projektantem procesów biznesowych i możliwością projektowania interfejsu użytkownika.

AppMasterPlatforma pobiera plany i generuje kod źródłowy aplikacji po naciśnięciu przycisku "Opublikuj". Kompiluje aplikacje, uruchamia testy, pakuje je do kontenerów Docker (dla aplikacji backendowych) i wdraża wszystko w chmurze, a wszystko to w ciągu kilku sekund.

Aplikacje backendowe są generowane przy użyciu języka Golang (Go), korzystając z wydajności, prostoty i łatwości konserwacji oferowanych przez Golang. Aplikacje internetowe są generowane przy użyciu frameworka Vue3 i JavaScript/TypeScript, podczas gdy aplikacje mobilne korzystają z frameworka serwerowego AppMaster, Kotlin i Jetpack Compose dla Androida oraz SwiftUI dla aplikacji iOS.

Dzięki potężnej platformie AppMaster nawet osoby bez doświadczenia w kodowaniu mogą stworzyć kompletne, skalowalne rozwiązanie programistyczne, które obejmuje zaplecze serwera, strony internetowe, portale klientów i natywne aplikacje mobilne. AppMaster nie tylko przyspiesza cały proces tworzenia oprogramowania, ale także całkowicie eliminuje dług techniczny, generując aplikacje od zera za każdym razem, gdy wymagania są modyfikowane.

Jeśli rozważasz przyjęcie platformy no-code dla swoich potrzeb w zakresie tworzenia oprogramowania, zwłaszcza takiej, która wykorzystuje zalety Golang, AppMaster powinna znaleźć się na szczycie Twojej listy. Zarejestruj bezpłatne konto i poznaj przyszłość tworzenia aplikacji dzięki rozwiązaniu, które jest 10x szybsze i 3x bardziej opłacalne.

Jakie są typowe polecenia Go Modules i ich zastosowania?

Typowe polecenia Go Modules obejmują:
  • gomod init - inicjuje nowy projekt Go Modules
  • go get - dodaje, aktualizuje lub usuwa zależność
  • go modtidy - usuwa nieużywane zależności
  • go modgraph - wyświetla drzewo zależności
  • go modverify - sprawdza drzewo zależności pod kątem błędów

W jaki sposób AppMaster.io może przyspieszyć tworzenie aplikacji opartych na języku Golang?

AppMaster.io to platforma no-code, która generuje aplikacje backendowe oparte na języku Golang. Korzystanie z AppMaster może znacznie przyspieszyć tworzenie aplikacji, ponieważ pozwala użytkownikom wizualnie projektować modele danych, procesy biznesowe i API endpoints, generując kod źródłowy aplikacji i zapewniając pełną skalowalność i łatwość konserwacji.

Jak dodać, zaktualizować lub usunąć zależności w modułach Go?

Aby dodać lub zaktualizować zależność, użyj polecenia go get, a następnie ścieżki importu pakietu i numeru wersji. Aby usunąć zależność, usuń odpowiednią instrukcję importu w kodzie źródłowym i uruchom go mod tidy, aby wyczyścić nieużywane zależności z pliku go. mod.

Jak mogę używać prywatnych modułów Go i zarządzać repozytoriami?

Aby korzystać z prywatnych modułów Go, skonfiguruj swoje środowisko za pomocą go env -w GOPRIVATE, a następnie oddzielonej przecinkami listy wzorców pathspec prywatnych modułów. Użyj konfiguracji Git lub tokenu dostępu do uwierzytelniania w prywatnych repozytoriach i zarządzaj zależnościami jak każdym innym projektem Go Modules.

Czym są moduły Go i dlaczego zarządzanie zależnościami jest ważne w Go?

Go Modules to oficjalny system zarządzania zależnościami dla projektów Go (Golang). Pomaga z łatwością zarządzać zależnościami projektu, zapewniając powtarzalność i łatwość utrzymania projektów Go. Zarządzanie zależnościami ma kluczowe znaczenie dla rozwiązywania problemów z wersjami, zapewniania kompatybilności z innymi pakietami i usprawniania procesu rozwoju.

Jak przeprowadzić migrację z poprzednich systemów zarządzania zależnościami do Go Modules?

Aby dokonać migracji z Dep, glide lub innego systemu zarządzania zależnościami, należy najpierw wykonać kopię zapasową oryginalnego projektu. Następnie uruchom go mod init, aby utworzyć nowy plik go.mod. Następnie użyj go mod tidy, aby wypełnić plik go.mod zależnościami z poprzedniego systemu i dokonaj wszelkich niezbędnych zmian.

Jak skonfigurować nowy projekt Go Module?

Utwórz nowy folder projektu, przejdź do niego za pomocą wiersza poleceń, a następnie użyj polecenia go mod init, po którym następuje ścieżka modułu. Spowoduje to wygenerowanie pliku go. mod, wskazującego, że folder jest projektem Go Modules. Edytuj plik, aby zarządzać zależnościami.

Czym jest wersjonowanie semantyczne i jego rola w modułach Go?

Semantic Versioning (SemVer) to system wersjonowania wykorzystujący trzyczęściowy format numeracji: Major.Minor.Patch (np. 1.2.3). Pomaga programistom komunikować zmiany w ich oprogramowaniu. Go Modules wykorzystuje SemVer do wersjonowania zależności, ułatwiając obsługę aktualizacji, kompatybilności wstecznej i zmian.

Jak mogę rozwiązać konflikty zależności w modułach Go?

Konflikty zależności można rozwiązywać za pomocą dyrektyw replace lub exclude w pliku go. mod. Dyrektywa replace pozwala zastąpić zależność inną wersją lub ścieżką lokalną, podczas gdy dyrektywa exclude zapobiega używaniu określonych wersji w projekcie.

Powiązane posty

Jak wybrać odpowiednie narzędzia do monitorowania zdrowia, które spełnią Twoje potrzeby
Jak wybrać odpowiednie narzędzia do monitorowania zdrowia, które spełnią Twoje potrzeby
Dowiedz się, jak wybrać odpowiednie narzędzia do monitorowania zdrowia dostosowane do Twojego stylu życia i wymagań. Kompleksowy przewodnik po podejmowaniu świadomych decyzji.
Korzyści z korzystania z aplikacji do planowania spotkań dla freelancerów
Korzyści z korzystania z aplikacji do planowania spotkań dla freelancerów
Odkryj, jak aplikacje do planowania spotkań mogą znacząco zwiększyć produktywność freelancerów. Poznaj ich zalety, funkcje i sposób, w jaki usprawniają zadania związane z planowaniem.
Korzyść kosztowa: dlaczego elektroniczne dokumentacje medyczne (EHR) bez kodu są idealne dla gabinetów, w których liczy się budżet
Korzyść kosztowa: dlaczego elektroniczne dokumentacje medyczne (EHR) bez kodu są idealne dla gabinetów, w których liczy się budżet
Poznaj korzyści finansowe systemów EHR bez kodu, idealnego rozwiązania dla praktyk opieki zdrowotnej, które zwracają uwagę na budżet. Dowiedz się, jak zwiększają wydajność, nie rujnując budżetu.
ROZPOCZNIJ BEZPŁATNIE
Zainspirowany do samodzielnego wypróbowania?

Najlepszym sposobem na zrozumienie mocy AppMaster jest zobaczenie tego na własne oczy. Stwórz własną aplikację w ciągu kilku minut z bezpłatną subskrypcją

Wprowadź swoje pomysły w życie