Go Language Modularization: Difference between revisions
Line 55: | Line 55: | ||
Interesting Standard library packages: | Interesting Standard library packages: | ||
* <span id='strconv'></span>[[Go Package strconv|strconv]] | |||
* <span id='strings'></span>[[Go Package strings|strings]] | * <span id='strings'></span>[[Go Package strings|strings]] | ||
* <span id='unicode'></span>[[Go Package unicode|unicode]] | * <span id='unicode'></span>[[Go Package unicode|unicode]] |
Revision as of 00:31, 22 August 2023
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: