Learning Golang: Packages
This is part 3 of my journey learning Golang.
Package declaration
The first line of a Go source file is the “package declaration”, defined by the package keyword.
This serves a few purposes:
- It provides a structure for grouping related source files.
- It provides a mechanism for code reuse.
- It differentiates between executable packages from utility packages (i.e. libraries).
Example:
1package main
go build will produce an executable binary file for source files with package main.
Importing a package
The import keyword allows bringing in and using code from other packages.
Example:
1import "fmt"
A “package reference variable” is created from the imported package’s name – in this case, fmt.
Importing multiple packages
It’s usual for a source file to import multiple packages. The convention for that is to use a single import statement
with a package list within parenthesis like this:
1import (
2 "package1"
3 "package2"
4)
Package alias
It is possible to define an “alias” as a shorthand name instead of the default package reference variable. The syntax for that is to specify the alias before the package name like this:
1import (
2 p1 "package1"
3 "package2"
4)
That allows calling functions in package1 like this:
1p1.SampleFunc()
Full example
This is a full “Hello World” example in Go that demonstrates the concepts above.
1package main
2
3import (
4 "fmt"
5 t "time"
6)
7
8func main() {
9 fmt.Println("Hello, World!")
10 fmt.Println("The time is now", t.Now())
11}
Highlights:
- Line 1: The package declaration with a package name of
main. That will make this an executable program. - Line 3: The
importstatement is importing a list of packages. - Line 4: Imports the “fmt” package with its standard name (“fmt”).
- Line 5: Imports the “time” package with the alias “t”.
- Line 9: Uses the
Printlnfunction from packagefmtto display “Hello, World!” - Line 10: Uses the
Printlnfunction from packagefmtto display “The time is now " followed by the current time, as returned by functionNowfrom packagetime(aliased ast).
This is a sample output of the program above:
1$ go run main.go
2Hello, World!
3The time is now 2020-08-16 18:07:24.180778888 +0000 UTC m=+0.000097040
Takeaways
- The
packagekeyword is used for the obligatory package declaration. - The
importkeyword is used for bringing into context code from other packages. mainis a special package name for executable programs.
If you know Go, what would you add to an initial exposure on the concept of packages?
comments powered by Disqus