Go Language Modularization

From NovaOrdis Knowledge Base
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

When a package is imported during compilation, the compiler searches directories specified by the GOROOT and GOPATH environment variables.

import Keyword

The import is a keyword use to access other packages.

Standard library

Go comes with a set of "built-in" packages, which come with the Go development environment.

The content of the Standard library is available here: https://pkg.go.dev/std

Interesting Standard library 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: