I’ve been playing around with Go, and so far I like it a lot. Go’s greatest innovation is that the compiler is the build tool, the package manager, the style checker, the linter, and the runner.
Here are a few Go libraries/programs I made:
- go-mailutil: MIME email handling utility functions: HTMLBody, TextBody, etc.
- go-xoauth2: XOAuth2 string generation functions (for use in the XOAUTH2 SASL auth schemes for IMAP/SMTP implemented by Gmail)
- go-synco: Fast IMAP message fetcher that outputs JSON objects per email with a key for each header as well as
text_body,html_body, etc.
Go’s language tour, documentation, and standard library are all excellent. I was able to be productive in Go very soon after finishing the first half of the language tour.
The quality of third-party libraries is quite high as well; I am optimistic that this is the result of Go’s careful design, and not just because it’s a fairly new language. In particular, I found go-imap to be spectacularly easy IMAP library to use and extend with new functionality (it is far better than Python imaplib and JavaMail).
One thing about Go that’s still unclear to me is which Web framework is the best (and most Go-idiomatic) for writing REST APIs. I haven’t yet had a chance to try out many of them, and the Libraries Written in Go page is purely descriptive, not normative.