Here are some resources I have personally used and found helpful as a javascript and ruby dev with very little computer science background to help you get started with your own research and adventure, GLHF!
1)Read this to get started and set up your workspace: https://golang.org/doc/install and https://golang.org/doc/code.html
2)Go through A Tour of Go: https://tour.golang.org/list
- You will likely find concepts getting a little more difficult to grasp towards the last 1/3 of the tour, don't worry about finishing all of it in one go, you can come back to this later
- An additional companion that works well with A Tour of Go as you follow along: http://www.golangbootcamp.com/book/ provides more examples and more details
- Personally I think the assignments don't really matter but following the videos really helped me understand some stuff I had a hard time understanding in A Tour of Go
- Read this: https://golang.org/doc/effective_go.html
- Go has really good official documentation, it could be a little dry to read all in one go (hehe one "go") but it is very helpful in the long run
- Get started on this: https://gophercises.com/ iterate back to previous resources when necessary
- Here is a very useful list of compiled resources that is also good for jumping around and browsing/referring to: https://dave.cheney.net/resources-for-new-go-programmers
- Some links on specific topics:
- unit tests in go: https://blog.alexellis.io/golang-writing-unit-tests/
- writing a web app in go: https://astaxie.gitbooks.io/build-web-application-with-golang/en/preface.html
- naming in go: https://talks.golang.org/2014/names.slide#1
- curated list of golang design patterns: https://github.com/tmrts/go-patterns
- a list of open source go projects to learn from: http://herman.asia/open-source-go-projects-to-learn-from
- We need to learn how to consume Go before we learn how to write Go; the Go documentation is a good place to start for that purpose, then after that, other people's Go code
- Some useful links on some stuff that are more tricky for devs coming from a JS and ruby background:
- 5 things that make go fast: https://dave.cheney.net/2014/06/07/five-things-that-make-go-fast
- understanding the unique characteristics of golang and the reasons behind it helps us write better go
- understanding slices in go https://www.goinggo.net/2013/08/understanding-slices-in-go-programming.html
- This one is a 4-part series (links inside article), highly recommend, pointers are tricky for us bootcampers https://www.ardanlabs.com/blog/2017/05/language-mechanics-on-stacks-and-pointers.html
- interfaces in go: https://www.calhoun.io/how-do-interfaces-work-in-go/
- methods, interfaces and embedded types in go: https://www.ardanlabs.com/blog/2014/05/methods-interfaces-and-embedded-types.html
- go concurrency: https://www.youtube.com/watch?v=yKQOunhhf4A&t=808s
- understanding channels: https://www.youtube.com/watch?v=KBZlN0izeiY
- join the gopher slack and ask questions, people are helpful, the community is great: https://invite.slack.golangbridge.org/