Continuing from here:
@mini I agree with your comment. It’s really simple to grasp if you come from a Java, C, or Python background. The Language Specification, while worded very oddly at first, is a dream to work with once you understand the vernacular and language of it all.
Some pros of Go are the CLI tools, the standard library, the mascot, and the documentation. I read a while back that the documentation was made and then the language was built.
The minds behind Unix and C designed and built the Go Programming Language. Enough said?
The CLI tools allow you to grab third party libraries, run the program before compilation, test the program, compile the program, and install the program, among other things. The installation is unique to my experience, as not only does it compile the code into a binary, but with a proper $GOPATH, that binary is added to your shell path, providing you another tool to run on the command line.
The standard library may seem like a strange thing to gush over with a language, but it does a great job at encompassing majority of things you are going to deal with, including web servers and graphics. You can build very high performing and robust applications with a small set of imports. You won’t find yourself in dependency hell or failing to compile on another platform (no unistd refactoring for Windows, for example).
Go is also very well documented compared to a lot of other languages out there. The documentation is on par with, and even exceeds the Microsoft documentation in some respects. You won’t find any lacking components or lacking examples (looking at you Docker and Datadog ). You have the Go Playground, The Language Specification, Go by Example, and a ton of other options.
Go is also one of the highest paid languages right now At least in the U.S. So it’s worth learning if you’re looking for a raise, or even to change industries.
If you’re interested in learning Go, I have two recommendations:
The Go Programming Language by Donovan and Kernighan is great. A bit dated, but not by much at this point. However, it is very difficult. I recommend having some experience under your belt. Understanding how accessing the heap works, having a basic understanding of memory management, pointers, and control flow is a must to dive into this book.
If you are a true beginner, Todd McLeod has a fantastic course on Go. He’s worked directly with Rob Pike and Brian Kernighan using Go and really knows his stuff with respect to Computer Science.
Looking forward to your thoughts and experience with the language! What have you built with it?