Go is a modern generic purpose open source programming language that was officially announced at the end of 2009. It began as an internal Google project and has been inspired by many other programming languages including C, Pascal, Alef, and Oberon. Its spiritual fathers are Robert Griesemer, Ken Thomson, and Rob Pike, who designed Go as a language for professional programmers who want to build reliable and robust software. Apart from its syntax and standard functions, Go comes with a pretty rich standard library.
At the time of writing this book, the latest stable Go version is 1.8, which includes some handy new features including the following: feel free to skip this if you have not used Go before:
- New conversion rules exist that allow you to easily convert between types that are almost equal provided that some criteria are met. You can fix the import paths of the golang.org/x/net/name form to just the name of the Go source file using the go tool command without having to open the source files yourselves.
- The operation of the tool is stricter in some cases and looser in cases that used to generate false positives.
- There is now a default value for GOPATH Environment Variables when GOPATH is undefined. For Unix systems, the default value is $HOME/go.
- There are various improvements to the Go runtime that speed up Go.
- There is a sort.slice() function that allows you to sort a slice by providing a comparator callback instead of implementing sort.Interface.
- There is now a Shutdown method to http.Server.
- There exist various small changes to the database/sql package that give the developer more control over queries.
- You can create bugs using the go bug command.