This[0] is the best way I've seen to learn Golang. It's exactly what <i>I</i> needed to make things stick and make sense.<p>0: <a href="https://quii.gitbook.io/learn-go-with-tests/" rel="nofollow">https://quii.gitbook.io/learn-go-with-tests/</a>
> With a buffered channel, the receiver will not get the message until the buffer is full.<p>This is wrong. <a href="https://golang.org/doc/effective_go.html#channels" rel="nofollow">https://golang.org/doc/effective_go.html#channels</a><p>> Receivers always block until there is data to receive. If the channel is unbuffered, the sender blocks until the receiver has received the value. If the channel has a buffer, the sender blocks only until the value has been copied to the buffer; if the buffer is full, this means waiting until some receiver has retrieved a value.
I wrote this post about learning Go: <a href="https://getstream.io/blog/go-1-11-rocket-tutorial/" rel="nofollow">https://getstream.io/blog/go-1-11-rocket-tutorial/</a><p>We switched from Python to Go over 2 years ago and it's been an amazing improvement in terms of performance as well as developer productivity for building high traffic endpoints.
I love reading articles like this. I really want to find a good work related reason to learn Go, just not a thing right now.<p>My main concern with the article is the massive abundance of typos. Like more so than a normal article written by a programmer. They make me stop and double check if I read it wrong, it is a term or something I haven't seen before, or just a typo.
I wosh I had time to learn new languages as I used to... but with 2 kids, one being 4 months it is nearly impossible. How do others devs hungry for knowledge deal with situations like this one?
skip Golang, go straight for Rust<p>EDIT:<p>as my time for learning new programming languages is limited, I would invest it in learning Rust, rather than learning Golang or learning both of them.<p>IMO the only reason to learn Golang is if your already have a legacy Golang codebase or if you want to contribute to various open source projects written in Go, like for example Kubernetes (my first experience with Golang was trying to compile a patched Hashicorp project).<p>It's the same as suggesting to a front-end dev, skipping Backbone, Ember and Angular and going straight for React.<p>There are lots of overlapping technologies in our space and learning all of them is a huge time waste.
Go's not existent standard library is almost a deal breaker for me.<p>The lack of even a dynamic array (c++ vector, Java arraylist) means you write a lot of 2-3 lines of slice notation phrases that require stopping and thinking about indices you wouldn't need to in other languages (and creating a lot of zero length slices for boundary conditions that shouldn't be needed). Also no balanced tree is a big issue (googles side implemention sucks in that the comparator cannot be passed in).<p>I recently tried to write some small library functions using sqlx to do arbitrary sql queries and then some munging of the results before returning it. It was extremely difficult.<p>The language feels half done at times. I find it hard to believe that Google used it much internally before releasing it. So many unfinished corners.<p>Generics would go a long way to fixing some of these issues.<p>While the ahead of time compilation is nice and had lead to me using it for things that need fast startup (some shell like scripts and literally old school cgi), it often seems like a worse Java.<p>If you don't like Java's verbosity, go's from my small use is about twice as bad. 300 lines of go does surprisingly little - part of this is gofmt's fault though.<p>Also, does anybody know of good performance tests between Java and go? I mean like well written and optimised. Most tests over I've are very poorly written and do dumb things like include hotspot startup and compilation times. Hotspot can generate some very slick code, but it just takes 10k passes to get up that point.