For Starters
- How to write your first Go module: golang.org/doc/code.html
- Guided (interactive) tour of Go: tour.golang.org
- A deeper (non-interactive) tour: golang.org/doc/effective_go.html
- The language spec (when you can't sleep): golang.org/ref/spec
- The online Go playground: play.golang.org
- The FAQ: golang.org/doc/faq
- Slice tricks: https://github.com/golang/go/wiki/SliceTricks
Classic Go Blog Articles:
- Declaration Syntax
- Defer, Panic, and Recover
- Error Handling
- Using Go Modules
- Maps in Action
- Go fmt your code
- Concurrency Patterns
- Talk: Concurrency is not Parallelism
- The Cover Story (test coverage tool)
- Laws of Reflection
- JSON and Go
Essential Standard Library Packages
Standard Library Packages You'll Eventually Need to Know
bufio
bytes
crypto/md5
crypto/rand
database/sql
encoding/csv
encoding/hex
encoding/json
flag
hash
html/template
log
net/http
net/http/httptest
net/http/httputil
net/url
os
os/exec
path/filepath
reflect
regexp
runtime
sort
sync
text/template
time
3rd Party Packages
Testing
- https://golang.org/doc/faq#testing_framework
:(
- https://github.com/smartystreets/gunit (xUnit, for go)
- https://github.com/smartystreets/assertions (testing helpers, so there.)
- https://github.com/smartystreets/goconvey (got very popular, so I don't use it anymore ;)
- https://smartystreets.com/blog/2015/02/go-testing-part-1-vanillla/
- https://smartystreets.com/blog/2015/02/go-testing-part-2-running-tests/
- https://smartystreets.com/blog/2015/05/go-testing-part-3-convey-behavior/
- https://smartystreets.com/blog/2015/08/go-testing-part-4-standalone-assertions/
- https://smartystreets.com/blog/2015/09/go-testing-part-5-testing-with-time/
- https://smartystreets.com/blog/2018/03/history-of-go-testing/
- https://smartystreets.com/blog/2016/11/our-testing-tools/
- https://smartystreets.com/blog/2018/07/lets-build-xunit-in-go/
StackOverflow Questions
- How to check if a file exists in go?
- How to efficiently concatenate strings in go?
- What are the uses for tags in go?
- How to print struct variables in console?
- When is the init function run?
- Reading a file line by line in go?
- Pointers vs values in parameters and return values?
- What is the idiomatic go equivalent of cs ternary operator?
- How to read write from to file using go?
- Difference between and operators in go?
- Checking the equality of two slices?
- How to read from standard input in the console?
- How to get the directory of the currently running file?
- Why would i make or new?
Controversial/Emerging Topics
- Go 2
- Generics
- Naming Conventions and Clean Code