I'm still learning Go and I use it rarely, so my own customizations are going slowly. The big thing that I use is my own fork of the runtime files here:
https://github.com/AndrewRadev/vim-golang. I've pushed some bugfixes upstream, but I was told that additional features will probably not be added to keep it minimal, so I went the "let's rewrite the whole thing" way. I may yet propose some fixes/improvements upstream, but let's see. For now, the differences are not that great and mostly internal, but I do have a small list of additions in the README that may be useful to someone.
Other than that, my ftplugin is pretty small:
https://github.com/AndrewRadev/Vimfiles/blob/master/ftplugin/go.vim. I'm not happy with `go run` as my makeprg, but I'd rather not have binaries laying around, unless I build them for a purpose. Gotta think about that, I suppose.
The "var template" area (
https://github.com/AndrewRadev/Vimfiles/blob/master/ftplugin/go.vim#L9-10) is something I use with other filetypes for extracting and inlining code from/to variables. The script is here:
https://gist.github.com/AndrewRadev/2592904.
It seems to work alright, although the presence of both "foo = bar" and "foo := bar" syntaxes makes it slightly trickier. Maybe my switch.vim plugin could help for that, though I still don't have any Go-specific definitions in there. Incidentally, if anybody knows about switch.vim and has a good idea for Go switches, open up an issue, I'd love to hear it. Same for splitjoin.vim.
The `outline_pattern` line (
https://github.com/AndrewRadev/Vimfiles/blob/master/ftplugin/go.vim#L12) is also something I use for different filetypes. Implementation is here:
https://github.com/AndrewRadev/Vimfiles/blob/master/startup/commands.vim#L65-84. It depends on the foldutil.vim plugin:
http://www.vim.org/scripts/script.php?script_id=158, though you could just use foldutil on its own, really. I just have a simple :Outline command that folds the buffer so you can see all function definitions.
The :RunCommand just maps the ! key to go-run the current file. Useful for simple experimentation.
I'm still not using ctags with Go, although godef seems like a nice alternative. I don't really know anything about this "Go Oracle" that people are mentioning, guess I should investigate.