It can’t Go on

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.

The good.

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.

The bad.

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.

The ugly.

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.