An overview of tools that will help improve your Go code

## All-in-one

  - [gometalinter](https://github.com/alecthomas/gometalinter) - Automates the installation, configuration and application of `gofmt`, `golint`, `govet` and several other code validation tools.

## Code Formatting

### Articles

  - [Formatting Go Code with gofmt](http://golangtutorials.blogspot.com/2011/06/formatting-go-code-with-gofmt.html)

### Tools

  - [gofmt](https://golang.org/cmd/gofmt/) - Start with the standard Go code formatter
  - [golint](https://github.com/golang/lint) - Detects style mistakes in Go code
  - [goimports](https://github.com/bradfitz/goimports) - Format code and fix your import statements

## Code generation, Templating and Generics

  - [json-to-go](https://mholt.github.io/json-to-go/) - Generate Go structs from JSON.
  - [Go gen](http://clipperhouse.github.io/gen/) - Type-driven code generation (generics)
  - [gojson](https://github.com/ChimeraCoder/gojson) - Another Go struct generator.
  - [gonerics.io](http://bouk.co/blog/idiomatic-generics-in-go/) - Idiomatic Generics in Go
  - [gotemplate](https://github.com/ncw/gotemplate) - Package-based templating system for Go
  - [sqlgen](https://github.com/drone/sqlgen) - Generate Go code for SQL interactions.

## Refactoring

### Articles

  - [Refactoring with go fmt](http://spf13.com/post/go-fmt/)
  - [gorename - easy refactoring](https://texlution.com/post/gorename/)
  - [Refectoring Tools](http://blog.ralch.com/tutorial/golang-tools-refactoring/) - An overview of refactoring tools for Go.

### Tools

- [eg](https://godoc.org/golang.org/x/tools/cmd/eg) - Example-based refactoring tool for Go
- [gofmt](https://golang.org/cmd/gofmt/) - Start with the standard Go code formatter
- [gorename](https://golang.org/x/tools/refactor/rename) - Renaming tool for Go

## Error Detection

### Articles

  - [Go Inspection Tools](http://blog.ralch.com/tutorial/golang-tools-inspection/) - An overview of tools for Go code inspection.
  
### Tools

  - [DeferCheck, StructCheck, VarCheck](https://github.com/opennota/check/) - A suite of tools for checking your code.
  - [errcheck](https://github.com/kisielk/errcheck) - Ensure you check your error conditions.
  - [go vet](http://golang.org/cmd/vet/) - Read this first on how to use the `go vet` command.
  - [SafeSQL](https://github.com/stripe/safesql) - Protect against unsafe SQL in your code.
  -

## Navigation

  - [go oracle - user manual](http://golang.org/s/oracle-user-manual) - A tool for understanding Go code
  - [Pythia](https://github.com/fzipp/pythia) - A browser-based UI for the Go Oracle.

## Visualization

  - [godegraph](http://github.com/kisielk/godepgraph) - A tool for generating dependency graphs of Go code.
