I have been using Go as my primary language the last 4 years. I have developed several internal tools using Go and for most parts I really like it.
Its fast on all sides. Fast development time (OK, not Python fast). Fast compile time. Fast executeables.
It’s strongly typed. I like to be able to see what a function accepts and returns. It’s simple.
It has a really good standard library. Most of the time i have been able to get by using only the standard library. When the standard library is not enough, it has a nice package manager.
It can be updates without breaking code or deployment. I really like the Python language, but the way that Python updates can break virtual environment really nags me. Nice when your code just keeps running.
Go tends to be a bit too verbose or detailed. I would prefer a little highter level of abstraction. I have a small library of helper functions to accomplish the most used functions without using Go’s low level standard library.
Go is lacking in some language constructs that I would like. Mainly macros, but also optional function parameters.
I understand the value of dumb down the language for large teams, but for personal projects I would like to make such decisions, not have them forced by my programming language.