The good
- Easy to learn
- Great tools
- Friendly community
- Fantastic standard library
- Good open source libraries
- Fast execution speed
- Safe
- Functions and Channels are first class citizens
- Crazy fast compilation / link speed (seriously think someone sold their soul for this)
- Great editor support
- Very cool interface duck typing
- Built for server software (duh, written by Google what did you expect?)
- Rob Pike
...and the bad
- Terrible support for generic programming and worse, an inability to admit that it's a problem (please see AA's first step)
- Limiting type system
- Magic types (slice, map, chan)
Who can I talk to?
What I use
- Stack Overflow If you have been a programmer more than a month, you will have already been here. Dramatically over curated but still the best resource for getting specific advice on any piece of code.
- Reddit Informal and kind to new gophers (apparently this is what we are called). Questions and general conversation about Go are welcomed.
- Google golang-nuts Google golang-nuts is also a friendly group. Though more technical than the Reddit sub, I have still found it to be helpful to new Go programmers.
- Google golang-dev golang-dev is for the discussion of the language and the tools used to build it. This is not a place for newbie questions. If you post, you better know what you are talking about.
- Github The keeper of the worlds source code
Other places that I don't use but are popular
- #go-nuts on irc.freenode.net IRC, when you simply can't wait for a response
- Google+ Communities Apparently Google has some sort of social thing.
- Twitter of course
- User Groups around the world
Editor
You are using vim, right? No? ahh, NeoVim? cool.
- vim-go The gold standard
What! ok, here's some other stuff
Automation Tools
- GoAuto Why use a config file when you can have an app for your workflow? oh, and I wrote this.
- Slurp Go
- Grunt Node.js
- Gulp Node.js
Tools
- goimports Hook into your editor and it will add your imports and format automagically
- go test Run your tests
- go install Build your app into a binary or package
- go build Compile your app or package
- gocode Autocompletion
- godef Goto definition
- gorename Refactoring
- oracle Source analysis
Be sure to checkout Github for available packages. The community has built a variety of packages in a surprisingly large list of domains.
In my next post, I will walk through the process of building my first Go package. Until then, Go write some code.