Go Project

From NovaOrdis Knowledge Base
Revision as of 19:06, 14 December 2023 by Ovidiu (talk | contribs) (→‎Directories)
Jump to navigation Jump to search

External

Internal

Overview

This page collects recommendation and facts about Go projects and it was mainly written with the assumption that one project lives in its own repository and contains a single module, as described in Packages, Modules, Projects and Repositories. Of course project can contain multiple modules, but that is not recommended.

Project Layout

This layout is inspired by:

https://github.com/golang-standards/project-layout

.
├── cmd
│    ├── myserver 
│    └── myclient
├── pkg
├── internal
├── Makefile
├── README.md
├── go.mod
├── go.sum
└── .gitignore


Directories

cmd

The directory contains the main applications for this project. If the project has multiple executables, their code should live under their own directory, and the name of the directory should match the name of the executable. Do not put a lot of code in the /cmd directory. If you think the code can be imported and used in other projects, put it in the /pkg directory. If the code is not reusable, put it in the /internal directory. It's common to have a small main function that imports and invokes the code from the /internal and /pkg directories and nothing else.

pkg

internal

Microservice-based Project Layout

Microservices in Go | Project Layout

TODO

Integrate Vendoring.