Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- These could be useful for applying for Go positions: (I'd call these intermediate Go)
- GopherCon 2019: Mat Ryer - How I Write HTTP Web Services after Eight Years (Mandatory)
- GopherCon 2018: Kat Zien - How Do You Structure Your Go Apps (Mandatory)
- GopherCon 2016: Francesc Campoy - Understanding nil (Mandatory)
- GopherCon 2018: Jon Bodner - Go Says WAT (Recommended)
- GopherCon 2016: Keith Randall - Inside the Map Implementation (Recommended)
- GopherCon 2017: Kavya Joshi - Understanding Channels (Recommended)
- Seth Vargo - What I'd like to see in Go 2.0 (Optional)
- GopherCon 2019: Dave Cheney - Two Go Programs, Three Different Profiling Techniques (Optional)
- Zalando specific recommended learning:
- https://stackoverflow.com/questions/129329/optimistic-vs-pessimistic-locking (Mandatory)
- https://www.postgresql.org/docs/current/explicit-locking.html (Recommended, SELECT FOR UPDATE is Mandatory)
- https://microservices.io/patterns/data/transactional-outbox.html (Recommended)
- https://opensource.zalando.com/restful-api-guidelines/ (Recommended)
- https://c4model.com/ (Recommended for System Design interview)
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag (Optional)
- https://microservices.io/patterns/data/saga.html (Optional)
- https://microservices.io/patterns/data/event-sourcing.html (Optional)
- https://microservices.io/patterns/observability/audit-logging (Optional)
- https://microservices.io/patterns/data/cqrs.html (Very Optional)
- These could be useful for your pet project:
- https://github.com/labstack/echo - Decent REST API framework
- https://go.libhunt.com/ - About all Go libraries out there are here
- https://github.com/avelino/awesome-go - Handpicked libraries and resources
- If I wanted something like ZF for Go, I'd check Buffalo, but I never did.
- Stuff we use at work and I can recommend:
- https://github.com/urfave/cli - The application part of our "framework"
- https://github.com/gorilla/mux - The router part of our "framework"
- https://github.com/justinas/alice - The middleware part of our "framework"
- https://github.com/cenkalti/backoff - A backoff library for retrying failing requests (used together with the standard http client)
- https://github.com/go-playground/validator - Validator with a bunch of bells and whistles.
- https://github.com/golangci/golangci-lint - All sorts of linters combined.
- https://github.com/stretchr/testify - Test framework. Good, but a bit bloated. Is might be better.
- http://github.com/guregu/null - For nullable types, often better than a simple pointer.
- 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.
- We also use, but I can't 100% recommend:
- 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
- https://github.com/rubenv/sql-migrate - Handles migrations for us. It's okay I guess.
- Stuff I use in my own projects and I can recommend:
- https://github.com/spf13/cobra - Alternative for urfave/cli
- https://github.com/gosuri/uitable - Displaying tables in a CLI
- https://github.com/uber-go/zap - A fast logger.
- https://github.com/brianvoe/gofakeit - Generates fake data. Might be intesting together with the new Fuzzing feature coming in 1.18.
- Some resources which are probably less useful right now, but I find interesting. They're rather advanced though:
- GopherCon 2017: Aaron Schlesinger - Functional Programming in Go
- GopherCon 2018: Filippo Valsorda- Asynchronous Networking Patterns
- Understanding Allocations: the Stack and the Heap - GopherCon SG 2019
- Finding Memory Leaks in Go Programs - Oleg Shaldybin
- Russ Cox - Profiling Go Programs
- GopherCon 2016: Rob Pike - The Design of the Go Assembler
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement