Skip to content

Questions — Go Topic

Log questions as they arise — don't wait until you understand them fully. A question written down is a learning opportunity captured. For module-specific questions, use the QUESTIONS.md inside the relevant module folder.


How to Use This File

  1. Write the question the moment it occurs to you, even if you can't articulate it well yet.
  2. Come back and refine the question once you understand it better.
  3. Update the status as you research or find answers.
  4. Link to the source where you found the answer.
  5. Capture follow-up questions — good answers always raise new ones.

Status Legend

Symbol Meaning
🔴 Unanswered — needs active research
🟡 Partial — have some understanding, still incomplete
🟢 Answered — well understood, could explain to someone else
Deferred — not urgent, revisit in a later module

Questions

Add questions below as they arise. Keep them numbered sequentially.

1. 🔴 What is a mutex?

Asked: 2026-06-01

What is a mutex in Go? When and why would I use one?

Reference snippet:

var userLocks sync.Map

func lockFor(userID int) *sync.Mutex {
    mu, _ := userLocks.LoadOrStore(userID, &sync.Mutex{})
    return mu.(*sync.Mutex)
}

2. 🔴 What is defer?

Asked: 2026-06-01

What does the defer keyword do in Go? When does it run, and what are common use cases?


3. 🔴 How do pointers work? (ELI5 for Python devs)

Asked: 2026-06-01

How do pointers work in Go? Explain like I'm 5, using terms and mental models familiar to Python developers.

Reference snippet — note &sync.Mutex{} (get address of), *sync.Mutex (pointer type), and mu.(*sync.Mutex) (type assertion to extract the pointer):

var userLocks sync.Map

func lockFor(userID int) *sync.Mutex {
    mu, _ := userLocks.LoadOrStore(userID, &sync.Mutex{})
    return mu.(*sync.Mutex)
}

Resolved Questions Archive

Move fully answered 🟢 questions here to keep the active list clean.

(none yet)


Question Stats

Status Count
🔴 Unanswered 3
🟡 Partial 0
🟢 Answered 0
⏸ Deferred 0
Total 3