Documenting my Golang journey
- compiled to single to a single binary file, it could be 200x faster than most interpreted Languages.
- No runtime to worry about
- statically typed, so no surprises at run time.
- Object oriented (sort of) [interfaces]
- Concurrency model that facilites a fast and rapid development
- Cross platform
- Excellent package management & testing built in
- East to learn (xD)
My main resources here are books:
In the following order:
- Go in action [Manning]
- The Go Programming Languages
- Go web programming.
Non-book resources:
Useful Resources:
-
Fundmentals
- variables and functions
- Pointers
- Types and Structs
- Maps, Slices, Arrays
- Functions
- Decision structures
- Loops over ranges
- Interfaces
- Packages
- Generics
- Concurrency Patterns
-
Concurrency
- Go routines
- Channels
- Select
- Sync Package
-
Concurrency Patterns
- Runner
- Pool
- Worker
-
Functional
- Compostion over Inheritance
- Higher Order functions
- Anonymous functions
- Closures
- Streams
- Immutability Monads
- Lazy and Eager Evaluation
- Currying functions
- Functional Design Patterns
- Testing Functions
-
Testing and Benchmarking
-
Web
- Session Management
- Working With Databases (SQl, MongoDB)
- RESTful apis
- Caching
- WebSockets
- gRPC
- Authentication and Authorization
- Working with Message Queues