Cleaning up, building, and running tests on save
Since the Go core team has provided us with such great tools as fmt
, vet
, test
, and goimports
, we are going to look at a development practice that has proven to be extremely useful. Whenever we save a .go
file, we want to perform the following tasks automatically:
Use
goimports
andfmt
to fix our imports and format the code.Vet the code for any faux pas and tell us immediately.
Attempt to build the current package and output any build errors.
If the build is successful, run the tests for the package and output any failures.
Because Go code compiles so quickly (Rob Pike once actually said that it doesn't build quickly, but it's just not slow like everything else), we can comfortably build entire packages every time we save a file. This is also true for running tests to help us if we are developing in a TDD style, and the experience is great. Every time we make changes to our code, we can immediately see whether we have broken something or had an unexpected impact on some other part of our project. We'll never see package import errors again because our import
statement will have been fixed for us, and our code will be correctly formatted right in front of our eyes.
Some editors are likely to not support running code in response to specific events, such as saving a file, which leaves you with two options: you can either switch to a better editor, or you can write your own script file that runs in response to filesystem changes. The latter solution is out of the scope of this book; instead, we will focus on how to implement this functionality in a couple of popular editor codes.