Start by looking at my answer in this thread; I'll build on that here.
Go is designed for simplicity. Part of that means making Go code easier to write with things like short variable declarations, automatic memory management (garbage collection), interfaces that can be defined without modifying any types, etc.
But another very big reason the Go creators aimed for simplicity is that it makes Go code very fast to compile and run. Even large projects can compile in seconds. And the resulting programs are really fast. Talking in very general terms, Go programs are about as fast as C or C++ programs, faster to start up than Java or .NET programs, and much, much faster overall than Ruby or Python programs.
Regarding limitations of Go, again refer to this thread. There's basically nothing Go can't do. Even there's no native Go library for a task, Go can bind to C/C++ libraries to do what you need. One example might be the go-sdl2 library for game development.
Since Go is hosted on GitHub, it's actually quite easy to fork it, add some code, and create a pull request. You have to sell your soul sign the Contributor License Agreement (CLA) for the pull request to even be considered, but that's normal for such projects. I also sold my soul to Oracle signed the Oracle Contributor Agreement (OCA), and this one was easier (no paper form that needed to be scanned).
Creating a pull request doesn't mean the code gets accepted, but that's quite normal for such a large project. I found the response to my pull request a lot friendlier than my first patch submitted to OpenJDK (which got shot down because apparently OptionalInt is already abandoned as far as Oracle is concerned - Optional<int> is the future).