Mi az ajánlott Go projekt mappaszerkezet?
A kis projektek általában nem igényelnek semmilyen struktúrát. Elinduláshoz csak main.go
szükséges. Azt javaslom, hogy mindig csak egyetlen main.go
mappával kezdj egy projektet.
Aztán, ha a projekted növekszik (képzeld el, rájössz, hogy most már két binárisra van szükséged), az általános megközelítés a cmd/
mappa hozzáadása. Ez persze lehet bármilyen dir, de a cmd
olyasmi, amit minden gopher azonnal felismer a projektben.
Aztán, amint a kódbázisod növekszik, elkezdesz több “.go” fájlt és több csomagot hozzáadni – ezek mindegyike külön alkönyvtárban lesz (definíció szerint). És itt sok újonc összezavarodik, és más nyelvekből vagy keretrendszerekből hoz strukturálási mintákat.
Sok más nyelven a könyvtárat fájlok “névtáblázására” használják, mint handlers
vagy models
, de a Go-ban a könyvtár egy külön csomag (pl. könyvtár). Tehát a “mappák strukturálása” a Go-ban valójában azt jelenti, hogy “hogyan és mikor absztrahálod a kódot alcsomagokra”.
De általában nem gondolkodsz a repo strukturálásán, hacsak a kódbázisod nem kéri (pl. túl sok fájl, nyilvánvaló absztrakciók, amelyek újrafelhasználhatók és elszigetelhetők a saját csomagjukban, stb).