It does have a nifty concurrency system.
I do like that most Go code is idiomatic because the language really kind of restricts you to writing it a certain way.
I wish it had a less verbose way of dealing with errors... some kind of function composition along with better formalization of Go's multi-return (e.g. Try, Either types) would be nice... of course without generics that is likely tricky.
I'm happy I can read and write it, but for my personal work I'll be sticking with some mix of Python and Java/Kotlin.
I think in 2019 I'm going to really give Rust a shot.