Coming from python background, when started to learn Golang, I found these are the things are painful.
* Golang deletes a item in a slice, map or array
* Golang detecting a item exists in a slice, map or array
* Golang managing error handling, keep repeating writing the boilerplate code e.g. if error != nil statement.
* Golang does not comes with [list|tuple,dictionary]-comprehension techniques. Every operation has to be on the boilerplate codes on native for loop.
* Golang does not comes with inheritance but it does come with concept of composition.
* Golang manages string, runes in a some complicated way.
On the contrary, Golang does showcasing it real power in certain area when solving problem.
* Golang go-routine and channels. Way impressive and powerful than many programming.
* Golang duck typing - interface concept, aka, if a animal walk like a duck, sound like a duck, then the animal is most likely a duck!
* Golang is able to compile as a single binary for several platforms. wow! this is the most selling feature in the microservice environment.
* Golang testing framework is robust!
* Golang is performant!
Golang is well-received by community, and a lot of good engines are developed on top of Golang, it proves that Golang able to cope with large scale of technologies. Moreover, Golang is easy to learn, it makes the adoption of Golang in a lot of projects becoming even more seamless. With that said, even with all the pains listed above, the benefit is clearly outweigh the pains.
Hopefully, Golang development team will have put those in mind in the upcoming release to solve the simple problems. That's would make a lot of developers even love Golang. Go! Golang.