I stopped while writing some Python to choose Go instead, just because I want to learn something new. I do like me a solid native app, too. I had done the basic tutorial last year - and doing something in a new language is always a fun exercise.
The first thing I did was set up VSCode with the Go extensions. Turns out that it is extremely easy to set up a full developer environment with Go and VS Code, complete with auto-linting, tests, debugging, test debugging, etc.!
About that auto-linting, though...
I appreciate when a compiler marks things that aren't safe, and I understand the the benefits behind auto-linting for big projects, but I like a bit more flexibility in my projects.
I understood quickly that I was breaking the Go law by not auto-formatting everything, as it was by all means not trivial to disable. Go "has an attitude" as some say.
Here are some settings if you are stuck in your ways like me and refuse to submit to your machine overlords:
"[go]": {
"editor.formatOnSave" : false,
"editor.formatOnPaste" : false,
"editor.formatOnType" : false,
"editor.codeActionsOnSave": {
"source.fixAll": false,
"source.organizeImports": false
}
},
"go.vetOnSave" : "off",
"go.lintOnSave" : "off",
"go.buildOnSave" : "off"
"source.organizeImports" was particularly annoying because I was trying to type "net" before actually using it (and it was just being erased on save), but I suppose I could get used to it managing import lines for me. I'm a bit peeved that it is using a tab in the line and not spaces though.
I used to be a tabber, until being fed up with Github and other viewers defaulting to "tabstop 8" which looks pretty bad for everything but assembly. Spaces just look good everywhere.
All that said, I can tell that Go is a very well thought out language. The libraries are solid, as is the structure of it, sacrificing certain conveniences to enforce simplicity and better code practices. It's kind of nice having a language built on critical feedback from a group rather than one guy publishing his cool project at the time, eh?
I'd argue that auto-linting to keep things uniform for text-processing does not give a lot of benefit to properly "DRY" code, but, at the same time, in the practical world, a balance of "WET" code can make things easier to understand.
2025 Update: These days I let Go do what it wants. While the auto-linting might not let you do that one cool thing, I've found the principles behind it to be very in-tune with good development practices.