/ / Struktura i utrzymanie projektu Golang z wieloma plikami - api, go, struktura

Struktura i utrzymanie projektu Golang z wieloma plikami - api, go, structure

Obecnie odkrywam Golanga i obecnie gram z Mux i Gorm, aby spróbować zbudować API.

Wszystko jest w porządku do momentu, gdy mam zbyt dużo treści w pliku main.go, więc chcę podzielić ten interfejs API na wiele plików,

Oczywiście, tak jak zrobiłbym w węźle.js API, tworzę folder modeli i folder tras i zaczynam umieszczać moje modele w osobnych plikach w folderze modeli (model1.go, model2.go itp.), aby mieć strukturę podobną do:

/MyProject |main.go |/models |model1.go |model2.go

Potem google trochę (no cóż, teraz dużo ...), aby wiedzieć, jak włączyć je do mojego pliku main.go, a teraz mam do czynienia z faktem, że w Golang projekt język chce, aby każdy plik zewnętrzny był pakietem który może być używany przez dowolną inną aplikację Golang, której nie szukam, Chcę tylko podzielić zawartość mojego projektu, aby mieć lepszą konserwację ale z tym projektem wydaje się to niemożliweprojekt na uwadze. Słyszałem o sprzedaży od 1.6, ale wciąż nie jest to rozwiązanie, ponieważ sprawiają, że konieczne jest utrzymanie zależności i plików projektu w tym samym miejscu, co nie jest konwencjonalnym (i logicznym) sposobem strukturyzowania projektu

Wydaje mi się, że ciężkie i złożone projekty Golanga nie mają całej bazy kodu w jednym pliku, więc Po prostu szukam dobrego sposobu na zorganizowanie projektu w wiele plików jak zrobiliby to, aby utrzymać swoje projekty.

Odpowiedzi:

2 dla odpowiedzi № 1
/MyProject
|main.go
|model1.go
|model2.go

Jeśli chcesz zachować swój kod tylko w jednym pakiecie.


1 dla odpowiedzi nr 2

Różne podejścia

Jedna paczka W razie potrzeby możemy umieścić zmienne w zakresie pakietu wprowadź opis obrazu tutaj

Dwie paczki W razie potrzeby zaimportujemy kod z drugiego pakietu

wprowadź opis obrazu tutaj

Trzy + pakiety z pakietem dla zmiennych konfiguracyjnych W razie potrzeby zaimportujemy kod z pakietu konfiguracji. Pakiet konfiguracyjny będzie przechowywał zmienne takie jak DB i TPL.

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Do waszej informacji: w Go nie ma zasięgu globalnego. Możesz przeczytać więcej na ten temat pod adresem Artykuł Alex Edwards Code Organization