Importing Packages
We can import packages into the current Go file.
Importing One Package
To import a package, use double quotes, like the following:
1 | |
Importing Multiple Packages
To import multiple packages at once, encapsulate the list of packages in parentheses, and separate packages by newlines.
1 2 3 4 5 6 7 8 | |
Package Aliasing
If the developer prefers not to use the package's full name, the dev can alias package names :
1 2 3 4 | |
Useful Packages
I've compiled a list of packages that I found useful for various Go projects I've contributed to:
General utility
strconv: converts numeric types (bools, ints, floats, etc.) and certain strings types to and from ASCII stringsfmt: "implements formatted I/O with functions analogous to C's printf and scanf. The format 'verbs' are derived from C's but are simpler."time: "provides functionality for measuring and displaying time"sync"provides basic synchronization primitives such as mutual exclusion locks. "strings: "implements simple functions to manipulate UTF-8 encoded strings."
Testing
-
testing: "provides support for automated testing of Go packages. It is intended to be used in concert with thego testcommand, which automates Go unit testing" -
github.com/stretchr/testify/suite: "provides [testing] functionality that you might be used to from more common object oriented languages. With it, you can build a testing suite as a struct, build setup/teardown methods and testing methods on your struct, and run them withgo testas per normal"
File I/O
bufio: "implements buffered I/O. It wraps an io.Reader or io.Writer object, creating another object (Reader or Writer) that also implements the interface but provides buffering and some help for textual I/O."os: "provides a platform-independent interface to operating system functionality"
Networking
net: "provides a portable interface for network I/O, including TCP/IP, UDP, domain name resolution, and Unix domain sockets"net/http: "provides HTTP client and server implementations."github.com/gorilla/mux: "implements a request router and dispatcher for matching incoming requests to their respective handler."