Advertisement
andrejsstepanovs

golang go docs resources

Jan 25th, 2022
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. These could be useful for applying for Go positions: (I'd call these intermediate Go)
  2. GopherCon 2019: Mat Ryer - How I Write HTTP Web Services after Eight Years (Mandatory)
  3. GopherCon 2018: Kat Zien - How Do You Structure Your Go Apps (Mandatory)
  4. GopherCon 2016: Francesc Campoy - Understanding nil (Mandatory)
  5. GopherCon 2018: Jon Bodner - Go Says WAT (Recommended)
  6. GopherCon 2016: Keith Randall - Inside the Map Implementation (Recommended)
  7. GopherCon 2017: Kavya Joshi - Understanding Channels (Recommended)
  8. Seth Vargo - What I'd like to see in Go 2.0 (Optional)
  9. GopherCon 2019: Dave Cheney - Two Go Programs, Three Different Profiling Techniques (Optional)
  10.  
  11. Zalando specific recommended learning:
  12. https://stackoverflow.com/questions/129329/optimistic-vs-pessimistic-locking (Mandatory)
  13. https://www.postgresql.org/docs/current/explicit-locking.html (Recommended, SELECT FOR UPDATE is Mandatory)
  14. https://microservices.io/patterns/data/transactional-outbox.html (Recommended)
  15. https://opensource.zalando.com/restful-api-guidelines/ (Recommended)
  16. https://c4model.com/ (Recommended for System Design interview)
  17. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag (Optional)
  18. https://microservices.io/patterns/data/saga.html (Optional)
  19. https://microservices.io/patterns/data/event-sourcing.html (Optional)
  20. https://microservices.io/patterns/observability/audit-logging (Optional)
  21. https://microservices.io/patterns/data/cqrs.html (Very Optional)
  22.  
  23. These could be useful for your pet project:
  24. https://github.com/labstack/echo - Decent REST API framework
  25. https://go.libhunt.com/ - About all Go libraries out there are here
  26. https://github.com/avelino/awesome-go - Handpicked libraries and resources
  27. If I wanted something like ZF for Go, I'd check Buffalo, but I never did.
  28.  
  29. Stuff we use at work and I can recommend:
  30. https://github.com/urfave/cli - The application part of our "framework"
  31. https://github.com/gorilla/mux - The router part of our "framework"
  32. https://github.com/justinas/alice - The middleware part of our "framework"
  33. https://github.com/cenkalti/backoff - A backoff library for retrying failing requests (used together with the standard http client)
  34. https://github.com/go-playground/validator - Validator with a bunch of bells and whistles.
  35. https://github.com/golangci/golangci-lint - All sorts of linters combined.
  36. https://github.com/stretchr/testify - Test framework. Good, but a bit bloated. Is might be better.
  37. http://github.com/guregu/null - For nullable types, often better than a simple pointer.
  38. There's one more cool trick I'd mention: We will create our custom error types which will suggest a response code and we use it at most places. So basically we don't just say `return errors.New("missing entity")`, but we say somethings like `return errpkg.New("missing entity", http.StatusNotFound)`, and we can extract that information in our handlers.
  39.  
  40. We also use, but I can't 100% recommend:
  41. https://github.com/go-pg/pg - ORM. We try to use it as a query builder for anything remotely complex, but it can do some "magic" which I hate with a passion. (ORMs are considered bad by Go
  42. https://github.com/rubenv/sql-migrate - Handles migrations for us. It's okay I guess.
  43. Stuff I use in my own projects and I can recommend:
  44. https://github.com/spf13/cobra - Alternative for urfave/cli
  45. https://github.com/gosuri/uitable - Displaying tables in a CLI
  46. https://github.com/uber-go/zap - A fast logger.
  47. https://github.com/brianvoe/gofakeit - Generates fake data. Might be intesting together with the new Fuzzing feature coming in 1.18.
  48.  
  49. Some resources which are probably less useful right now, but I find interesting. They're rather advanced though:
  50. GopherCon 2017: Aaron Schlesinger - Functional Programming in Go
  51. GopherCon 2018: Filippo Valsorda- Asynchronous Networking Patterns
  52. Understanding Allocations: the Stack and the Heap - GopherCon SG 2019
  53. Finding Memory Leaks in Go Programs - Oleg Shaldybin
  54. Russ Cox - Profiling Go Programs
  55. GopherCon 2016: Rob Pike - The Design of the Go Assembler
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement