Go Standard Library Flashcards
Go Standard Library Flashcards
25 flashcards covering key packages in the Go standard library, fmt, strings, io, net/http, encoding/json, and os.
Additional Flashcard Topics
fmt Package:
fmt.Printf, fmt.Sprintf, fmt.Errorf. Format verbs:%v(default),%+v(struct fields),%#v(Go syntax),%T(type).Errorfcreates formatted errors.strings Package:
strings.Contains, strings.Split, strings.Join, strings.TrimSpace.strings.Builderfor efficient string concatenation.io Package:
io.Readerandio.Writerare the foundational interfaces.io.Copy(dst, src)streams data.io.TeeReadersplits a reader into two.net/http Package:
http.ListenAndServe(":8080", nil)starts a server.http.HandleFuncregisters route handlers.http.Clientwith timeouts for production use.encoding/json Package:
json.Marshal/json.Unmarshalfor JSON. Struct tags control field names: ,json:"name,omitempty", .json.RawMessagefor deferred parsing.os Package:
os.Args, os.Getenv, os.Open, os.Create.os.Exitterminates the program.os.Signalhandles OS signals.
Intuition
Go’s standard library is remarkably complete, fmt handles formatted I/O, strings provides text manipulation, io defines the foundational Reader/Writer interfaces that compose like Unix pipes, net/http offers a production-ready HTTP server and client, encoding/json handles JSON marshalling/unmarshalling, and os interacts with the operating system. The key philosophy: small, composable interfaces that snap together. Go’s standard library is intentionally minimal, it provides the building blocks, not the entire framework.
Common Pitfalls
- Goroutine leaks: Starting goroutines without a cancellation mechanism (context or done channel), they run forever, consuming memory. Always use
context.Contextfor cancellation. - Map concurrency: Maps in Go are not safe for concurrent read/write, using them from multiple goroutines without a mutex causes a runtime panic. Use
sync.Mapor wrap withsync.RWMutex. - Defer evaluation timing:
deferarguments are evaluated when thedeferstatement executes, not when the deferred function runs, this often surprises developers with pointer semantics. - Error wrapping:
fmt.Errorf("context: %w", err)wraps errors;%vdoes not. Unwrapping witherrors.Isanderrors.Asrequires%w. - String vs []byte:
stringis immutable;[]byteis mutable. Converting between them copies data.unsafe.Pointercan avoid copying but is unsafe.
Cross-References
- I/O: Deep dive into io.Reader, io.Writer, and buffered I/O covered in these flashcards.
- net/http: HTTP server and client patterns using the standard library.
- Go Practice: Auto-graded problems testing core Go concepts alongside standard library usage.
- Rust Basics: Ownership model compared to Go’s garbage collection.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.