The Go distribution comes with a plethora of tools that can make your life as a programmer easier. The two most useful of them are gofmt and godoc.
The gofmt utility formats Go programs in a given way, which is really important when different people are going to work with the same code for a big project. You can find more information about gofmt at https://golang.org/cmd/gofmt/.
The following is a poorly formatted version of the hw.go program that is hard to read and understand:
$ cat unglyHW.go package main import "fmt" // This is a demonstrative comment! func main() { fmt.Println("Hello World!") }
Processing the previous code, which is saved as unglyHW.go with gofmt, generates the following easy to read and comprehend output:
$ gofmt unglyHW.go package main import "fmt" // This is a demonstrative comment! func main() { fmt.Println("Hello World!") }
Remembering that the gofmt utility does not automatically save the generated output is important, which means that you should either use the -w option followed by a valid filename or redirect the output of gofmt to a new file.
The godoc utility allows you to see the documentation of existing Go packages and functions. You can find more information about godoc at http://godoc.org/golang.org/x/tools/cmd/godoc.
The following screenshot shows the output of the godoc command generated on a Terminal when asked for information about the Println() function of the fmt package:
Another handy feature of godoc is that it can start its own web server and allow you to see its documentation using a web browser:
$ godoc -http=:8080
The following screenshot shows the kind of output you get on a web browser after visiting http://localhost:8080/pkg/ while the previous command is running. You can use any port number you want, provided that it is not already in use:
The most important tool for a programmer is the editor they use for writing the source code. When I am on a Mac, I typically use the TextMate editor, but when I am on a different Unix machine, I prefer vi. Choosing an editor is not an easy task because you are going to spend a lot of time with it. However, any text editor will do the job as long as it does not put any control characters inside the source code files. The following screenshot shows the TextMate editor in action: