Today I Learned Go Part 3
#
This is the third part of my notes from going through a go-tooling-workshop.
gofmt
versus goimports
#
Both tools gofmt
and goimports
will format your code to follow the code styling standard from the Go team at Google. The gofmt
tool can be used at the command line and also integrated into your code editor. Many popular code editors have plugins or packages that bundle this with some other features for making developing in go more productive.
To use gofmt
for a file and save the result in place you run:
gofmt -w main.go
You can also run it on all files for a package by using the fmt
subcommand of the go
tool:
go fmt .
And this will output all the files that were modified.
goimports
will do the same as gofmt
but it also will remove any import statements that aren't used and add missing import statements. For example if a line of your code uses fmt.Println
and your imports for that file do not include "fmt"
then it will be added by goimports
.
Using gomodifytags
#
This is a handy tool that can take the pain and potential for error out of adding field tags to your structs. For example, give the following struct in some code in your package:
type Person struct {
Name string
Age int
}
You can use gomodifytags
to add them for you using the following command:
gomodifytags -w -file main.go -add-tags json -struct Person
Which will make the changes and write them to the file, and look like:
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}