Go Language Modularization

From NovaOrdis Knowledge Base
Revision as of 00:49, 15 August 2023 by Ovidiu (talk | contribs) (→‎Packages)
Jump to navigation Jump to search

External

Internal

Overview

A standard organization of the files that are part of a project makes easier to share code with other people who also use the same standard. Go workspaces encourage such a standard.

Overview

Workspaces

The standard workspace layout is:

. 
├─ src
├─ pkg
└─ bin

This layout is recommended, but not enforced.

A workspace may contain multiple projects.

Define the relationship between workspace and the GOPATH variable.

Project

Packages

A package is a group of related source files. A package can be imported by other packages. Always, there must be one package called main, which produces an executable as result of its compilation. Other packages do not produce executables as result of their compilation.

Must the package live in a directory with the same name?

Deplete, merge into this document and delete: Go Concepts - Packages

Declaring Packages

The main Package

The main package produces an executable as result of its compilation. The main package must have a function called main(), which is where the code execution starts.

package main
import "fmt"
func main() {
  fmt.Printf("hello\n")
}

Importing Packages

Dependencies

Vendoring

"Vendoring" is the act of making a local copy of a third party package your project depends on. This copy is traditionally placed inside each project and then saved in the project repository.

TODO

Deplete, merge into this document and delete: