lets-go

Documenting my Golang journey

Why Go?

  • 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)

Resources

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:

Articles I find good

Tracking Progress

  • 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