Skip to content

Go Go Code is a tutorial series for developers, by a developer

Notifications You must be signed in to change notification settings

Oskang09/go-go-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Go Go Code

Go Go Code is a tutorial series for developers, by a developer. It's a hands-on guide built from personal experience, aimed at helping you understand the basics of key technologies, tools, and concepts in a clear and practical way. Whether you're just starting out or looking to solidify your foundation, Go Go Code walks you through the basics of each essential topic, step by step.

From setup to hands-on examples, every lesson is designed to help you understand not just the how, but also the why behind the code. Perfect for developers who want to build real skills, one concept at a time.

Let's Go Go!

Core Chapters

  • 🧰 Development Environment
  • 🐹 Installing Go SDK
    • Manual Installation
    • macOS (via Homebrew)
    • Windows (via PowerShell)
    • Linux (Debian/Ubuntu)
  • 📚 SDK Versioning
  • 📚 Hello World Program
  • Entry Point
  • Package
    • Defining Package
    • Importing Package
    • Package Conflict
  • Modules
    • Adding Dependencies
    • Dependency Integrity
    • Module Versioning
  • Variables
    • Declaring Variables
    • Zero Values
    • Type Conversion
  • Function
  • Private Function
  • Function Continued
  • Multiple Results
  • Named Return Values
  • Pointers, References, and Dereferences
  • Initializer new for Pointer
  • Null & Nil
  • Great Things with Pointers
  • Side Note: Pointer to a Pointer (**T, ***T)
  • Arrays (Fixed Size)
  • Slice
    • append on Slice
    • Slice Reassignment & Pre-Allocating Slices
    • Sharing Underlying Arrays
  • Maps
    • Zero Values of Maps
    • Syntax of Maps
  • Struct
    • Side Note: Zero Values for Struct
    • Methods on Structs & Pointer Receivers
  • Interface
    • Real World Example: fmt.Stringer
  • Type Switches and Type Assertions
    • Type Assertion
    • Type Switch
  • Sample Handling
  • Custom Error Types
  • Sentinel Errors
  • Wrapping Errors (Go 1.13+)
  • Error Handling Comparison between Go and Javascript
  • if and else
  • switch
    • Evaluation Order
    • Fallthrough
    • switch with no condition
  • for loop & range
    • Classic for loop
    • for range loop
  • defer
    • Stacking defer
    • Note: Evaluation Timing
    • Caution: Loops defer
  • select
    • Timeout
    • Non Blocking Select
    • Multiplexing Channel with for-select
  • Shared Memory Approach
  • CSP Approach (Channel)
  • Common CSP Patterns with Channels
    • Worker Pool
    • Ticker/Timer Channels
    • Pipeline
  • Waiting for Goroutines to Finish
  • Data Races
  • Non-Deterministic Execution Order
  • Goroutine Leaks

Extra Series

Going beyond the basics with advanced usage patterns and real-world concepts.

  • Generic Data Structures
  • Common Cases with Generic
    • Generic Map
    • Generic Filter
    • Generic Reduce
  • Things to mention for Generic
    • Type Constraints
    • comparable
    • Generic on Struct
    • Type Inferences
  • Formatting
  • Logging
    • Logging to file
    • Custom Logger
    • Logging with JSONFormatter
  • Data Struct & Function of a Mutex
  • Using mutex as variable
  • Using read-write mutex
  • Using mutex in struct
  • Important: Using mutex w/o pointer

Sample Code References

🤝 Contributing to Go Go Code

Thank you for considering contributing to Go Go Code! 🎉
We welcome contributions from everyone — whether it's fixing a typo, improving examples, adding explanations, or introducing new advanced topics.

Our goal is to make this repository a practical, beginner-friendly, and production-ready Go learning resource.

About

Go Go Code is a tutorial series for developers, by a developer

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages