The cover image is from MariaLetta/free-gophers-pack
This post is part of a series detailing my journey with golang
from learning the language to entering the DigitalOcean App Platform Hackathon.
The app I built can be found on GitHub.
Part 2 details the setup of my golang
development environment.
Setup golang
Install golang
First step is to install golang
which can be done by following this page.
Create workspace
This step is not required when using modules. See the note on this page.
Create a workspace which results in the directory structure shown below.
$HOME
└── go
├── bin
└── src
Set environment variables
Next I added the following environment variables to my .zshrc
file.
export GOPATH=/Users/jonjam/go
export GOBIN=/Users/jonjam/go/bin
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
More information about these variables can be found here.
Setup Visual Studio Code
There are plenty of choices when it comes to IDEs. I went with Visual Studio Code, since I was already familiar with it.
This section details configuring it for golang
.
Install and activate Go extension
First to add golang
support to VS Code, install the Go extension.
After installing the extension, there are some additional command line tools that also need to be installed to support the extension. This can be done by following this page.
Configure formatting tool
The default formatting tool in VS Code is goreturns
which doesn't work with modules (see here for more information).
goimports
on the other hand does support modules.
Change the go.formatTool
setting to goimports
.
Enable the Go language server
Besides formatting, some of the other helper tools do not support modules (see here for more information).
The Go language server should be used; this can be enabled by following these steps.
Setup debugging
Debugging golang
apps in VS Code is provided by Delve.
Follow these steps to install and configure Delve.
Setup linter
Now that VS Code is setup, the final step is to choose a linter to assist with development.
I chose golangci-lint
. It is a fast go linters runner that is capable of running multiple linters in parralel.
I discovered this on golang wiki.
Install
golangci-lint
can be installed locally by following these steps.
Configure linting tool
To integrate golangci-lint
with VS Code, it is just a matter of changing a couple of settings.
Create configuration file
The final step is to create a .golangci.yml
for the project which defines what linters are enabled. This can also be used to enable/disable specific rules.
Below is the .golangci.yml
file from stock-checker app:
linters:
disable-all: true
enable:
# Default enabled linters
- deadcode
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- structcheck
- typecheck
- varcheck
# Added
# goimports aligns with VS Code setup and includes gofmt
- goimports
- golint
Next
That's it for this post.
In part 3, I will talk about developing the project.
Top comments (0)