# Packages
# README
Golang
All resources and learnings in Golang
Golang Concurrency exercise -
GO concurrency guide -
Thread safety in Go -
Producer Consumer Problem in Go -
- https://www.ibm.com/blog/producer-consumer-in-go/
- https://gist.github.com/JMSwag/ca81d0b58fcce8d6c2c6
Dinning Philosopher Problem -
Concurrent prime sieve -
Why Go programming?
Scheduling In Go -
- https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html
- https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html
- https://www.ardanlabs.com/blog/2018/12/scheduling-in-go-part3.html
Go concurrency examples
Videos: (MUST WATCH) Go Concurrency Patterns:
Concurrency is not Parallelism by Rob Pike
BOOKS -
-
Textbook: Introduction to Multithreaded, Distributed, and Parallel Programming (2000)
has the best and most complete teaching on the Go style of concurrent programming, which is actually named Concurrent Sequential Processes. Many other styles of concurrent programming are also explained, compared, and contrasted, both for shared memory as well as distributed memory systems. -
Textbook: The Go Programming Language
has two excellent chapters on concurrency with examples that steadily grow in complexity. It's not free, but it's well worth the price IMO as it contains useful information for all features of the language except generics.
Golang Quiz
Offical Blogs to read -
Awesome Go
A curated list of awesome Go frameworks, libraries, and software. Inspired by awesome-python. Github:: https://github.com/avelino/awesome-go#contents
Golang Articles -
-
Interface and Composition for effective unit testing in Go
-
Simple clean Go REST API architecture with dependency injection and mocking example, following SOLID principles.
-
An implementation of JSON Schema, draft v4 v6 & v7 - Go language
Popular Golang Packages one should know:
Golang Blogs -
Common Mistakes in Golang -
- https://github.com/golang/go/wiki/CommonMistakes#using-goroutines-on-loop-iterator-variables
- https://gist.github.com/posener/92a55c4cd441fc5e5e85f27bca008721 Be Careful with Table Driven Tests and t.Parallel()
- https://stackoverflow.com/questions/36167200/how-safe-are-golang-maps-for-concurrent-read-write-operations Map concurrent read write
Pointer Performance Golang -
- https://medium.com/@vCabbage/go-are-pointers-a-performance-optimization-a95840d3ef85
- https://segment.com/blog/allocation-efficiency-in-high-performance-go-services/
Create Microservices in Golang
Reddit Golang Resource -
Newbie Resource Golang -
First you should take the language tour Then, you should visit:
- https://golang.org/doc/code.html to learn how to organize your Go workspace
- https://golang.org/doc/effective_go.html be more effective at writing Go
- https://golang.org/ref/spec learn more about the language itself
- https://golang.org/doc/#articles a lot more reading materialThere are some awesome websites as well:
- https://blog.gopheracademy.com great resources for Gophers in general
- http://gotime.fm awesome weekly podcast of Go awesomeness
- https://gobyexample.com examples of how to do things in Go
- http://go-database-sql.org how to use SQL databases in Go
- https://dmitri.shuralyov.com/idiomatic-go tips on how to write more idiomatic Go code
- https://divan.github.io/posts/avoid_gotchas will help you avoid gotchas in Go
- https://golangbot.com tutorials to help you get started in Go
- https://tutorialedge.net a collection of articles around various aspects of GoThere's also an exhaustive list of videos http://gophervids.appspot.com related to Go from various authors.If you prefer books, you can try these:
- http://www.golangbootcamp.com/book
- http://gopl.io/
- https://www.manning.com/books/go-in-action (if you e-mail @wkennedy at [email protected] you can get a free copy for being part of this Slack)
- If you want to learn how to organize your Go project, make sure to read:
- Once you are accustomed to the language and syntax, you can read this series of articles for a walk through of the various standard library packages:
- Finally, this will give you a list of even more resources to learn Go: