Go is certainly not (yet) ready for every task C++ has taken over during the last 25 years.
But I would say that for most tasks, it is more than good enough already.
> Similarly I'm not sure how great it is at client side apps where you need certain code for OSX and different code for Linux and yet different code for Windows.
This is very easy in Go, just name your file foo_windows.go, foo_linux.go, etc. See for example:
Define "most". It's not suitable for any app I've written in the last 25 years. But I don't do server work, I do client work. Native apps on Windows, Mac, Linux and consoles.
It might be useful for some command line tools I've written but since nearly every command line tool I've written in the last 25 years has been to make data for my C++ client side apps there's a benefit to being able to share code.
Of course I know that's just one anecdote, mine. If it fits most of your use cases awesome.
For me, one thing that might go a long way to use Go is are cross platform client side libraries like WinForms. Once of the things that makes C# so popular with my crowd is how easy it is to make tools with GUIs. Of course C# also interfaces with native data pretty well. No idea how well Go handles that case
But I would say that for most tasks, it is more than good enough already.
> Similarly I'm not sure how great it is at client side apps where you need certain code for OSX and different code for Linux and yet different code for Windows.
This is very easy in Go, just name your file foo_windows.go, foo_linux.go, etc. See for example:
https://github.com/howeyc/fsnotify