Return to Concurrent Programming Glossary, Golang Glossary, Programming Glossary
Golang, also known as Go, is renowned for its efficient and straightforward approach to concurrent programming. This glossary provides a concise overview of key terms and concepts related to concurrent programming in Go, supplemented with examples and links to the official Go documentation for further exploration.
A goroutine is a lightweight thread managed by the Go runtime. Goroutines are the backbone of Go's concurrent execution model, allowing functions to run concurrently with others. ```go go func() {
fmt.Println("Hello from a goroutine")}() ``` For more details, refer to the [Go documentation on goroutines](https://golang.org/doc/effective_go#goroutines).
A channel in Go provides a way for goroutines to communicate with each other and synchronize their execution. Channels can be buffered or unbuffered, influencing how send and receive operations behave. ```go ch := make(chan int) ``` Learn more about channels from the [Go documentation on channels](https://golang.org/doc/effective_go#channels).
The select statement allows a goroutine to wait on multiple communication operations, proceeding with the one that is ready to communicate. It's essential for implementing complex concurrency patterns. ```go select { case msg := ←ch1:
fmt.Println(msg)case ch2 ← msg:
// send msg to ch2} ``` The [Go select statement](https://golang.org/ref/spec#Select_statements) is further explained in Go's spec.
A mutex (mutual exclusion lock) is used to protect shared resources from concurrent access, ensuring that only one goroutine accesses the resource at a time. ```go var mu sync.Mutex mu.Lock() // critical section mu.Unlock() ``` The `sync` package, including mutexes, is documented at [Go's sync package](https://golang.org/pkg/sync/).
A WaitGroup waits for a collection of goroutines to finish executing. It's useful for ensuring that all tasks have completed before proceeding. ```go var wg sync.WaitGroup wg.Add(1) go func() {
defer wg.Done() // do work}() wg.Wait() ``` WaitGroups are part of the `sync` package, detailed in [Go's sync.WaitGroup](https://golang.org/pkg/sync/#WaitGroup).
Buffered channels allow for the storage of multiple values before blocking on send operations, providing additional flexibility over unbuffered channels for concurrent data flow. ```go ch := make(chan int, 100) ``` Buffered channels are explained in the [Go blog on channels](https://blog.golang.org/channels).
A deadlock occurs when goroutines wait on each other to release resources they each need, resulting in a standstill where no progress is made. Understanding and avoiding deadlocks is crucial, as outlined in [Go's deadlock detection](https://golang.org/doc/articles/race_detector.html).
A race condition arises when the system's outcome depends on the non-deterministic ordering of events, leading to unpredictable results in concurrent operations. ```go go raceyIncrement() go raceyIncrement() ``` The Go race detector tool helps identify race conditions, as described in [Detecting Race Conditions With Go](https://golang.org/doc/articles/race_detector.html).
The context package provides a means of passing request-scoped values, cancellation signals, and deadlines across API boundaries to goroutines involved in processing a request. ```go ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second) defer cancel() ``` The context package is thoroughly documented at [Go's context package](https://golang.org/pkg/context/).
Specifying a channel direction in function parameters makes the intent clear whether the channel is meant for sending, receiving, or both, enhancing code readability and safety. ```go func sendOnly(ch chan← string) {
ch <- "data"} ``` Channel directions are covered in the [Go spec on channel types](https://golang.org/ref/spec#Channel_types).
The atomic package provides low-level atomic memory primitives useful for implementing synchronization algorithms without conventional locking mechanisms. ```go var ops uint64 atomic.AddUint64(&ops, 1) ``` Learn about atomic operations in Go's [atomic package documentation](https://golang.org/pkg/sync/atomic/).
Goroutine leaks occur when goroutines are spawned but never terminate, leading to increased memory usage and potential application instability. Detecting and avoiding goroutine leaks are essential, as discussed in various Go community articles and resources.
Non-blocking operations with channels and select statements allow goroutines to attempt send or
receive operations without waiting, providing mechanisms for fallback or timeout.```go select { case msg := ←ch:
fmt.Println(msg)default:
fmt.Println("No message")} ``` Non-blocking patterns are an integral part of concurrent programming in Go.
While Go does not natively support Software Transactional Memory (STM), the concept is relevant in discussions about concurrency models that aim to simplify concurrent programming by making sequences of operations atomic.
Concurrency and parallelism are related but distinct concepts. Concurrency involves structuring programs as independently executing processes, while parallelism refers to executing computations simultaneously. Rob Pike's talk, [“Concurrency Is Not Parallelism”](https://www.youtube.com/watch?v=oV9rvDllKEg), provides insight into these concepts.
Go's concurrency model is influenced by CSP (Communicating Sequential Processes), a formal language for describing patterns of interaction in concurrent systems. Understanding CSP can deepen one's grasp of Go's concurrency primitives, as discussed in [Hoare's CSP paper](https://www.cs.cmu.edu/~crary/819-f09/Hoare78.pdf).
While Go is not a functional programming language, it supports functional programming concepts like first-class functions and closures, which can be elegantly used in conjunction with its concurrency model.
Go provides several concurrency building blocks, including goroutines, channels, the `sync` and `context` packages, and select statements, each serving different purposes in concurrent programming.
Several concurrency patterns are prevalent in Go programming, such as fan-in, fan-out, worker pools, and pipelines. These patterns provide structured approaches to solving common concurrency problems.
The Go Memory Model specifies the conditions under which reads and writes to shared variables are guaranteed to behave as expected. It's crucial for understanding how memory works in concurrent Go programs. The Go Memory Model is documented at [Go's Memory Model](https://golang.org/ref/mem).
Go offers various synchronization techniques beyond mutexes, including the `sync/atomic` package for atomic operations and channels for coordinating goroutine execution.
Go's approach to concurrency is one of its most lauded features, offering a robust set of tools and primitives for building concurrent applications. By understanding and correctly applying these concepts, developers can harness the full power of Go to build efficient, safe, and scalable concurrent systems. For a deep dive into Go's concurrency model and best practices, the [Go documentation](https://golang.org/doc/) and the Go blog are invaluable resources.
Concurrency: Concurrency Programming Best Practices, Concurrent Programming Fundamentals, Parallel Programming Fundamentals, Asynchronous I/O, Asynchronous programming (Async programming, Asynchronous flow control, Async / await), Asymmetric Transfer, Akka, Atomics, Busy waiting, Channels, Concurrent, Concurrent system design, Concurrency control (Concurrency control algorithms, Concurrency control in databases, Atomicity (programming), Distributed concurrency control, Data synchronization), Concurrency pattern, Concurrent computing, Concurrency primitives, Concurrency problems, Concurrent programming, Concurrent algorithms, Concurrent programming languages, Concurrent programming libraries, Java Continuations, Coroutines, Critical section, Deadlocks, Decomposition, Dining philosophers problem, Event (synchronization primitive), Exclusive or, Execution model (Parallel execution model), Fibers, Futures, Inter-process communication, Linearizability, Lock (computer science), Message passing, Monitor (synchronization), Computer multitasking (Context switch, Pre-emptive multitasking - Preemption (computing), Cooperative multitasking - Non-preemptive multitasking), Multi-threaded programming, Multi-core programming, Multi-threaded, Mutual exclusion, Mutually exclusive events, Mutex, Non-blocking algorithm (Lock-free), Parallel programming, Parallel computing, Process (computing), Process state, Producer-consumer problem (Bounded-buffer problem), Project Loom, Promises, Race conditions, Read-copy update (RCU), Readers–writer lock, Readers–writers problem, Recursive locks, Reducers, Reentrant mutex, Scheduling (computing), Semaphore (programming), Seqlock (Sequence lock), Serializability, Shared resource, Sleeping barber problem, Spinlock, Synchronization (computer science), System resource, Thread (computing), Tuple space, Volatile (computer programming), Yield (multithreading) , Degree of parallelism, Data-Oriented Programming (DOP), Functional and Concurrent Programming, Concurrency bibliography, Manning Concurrency Async Parallel Programming Series, Concurrency glossary, Awesome Concurrency, Concurrency topics, Functional programming. (navbar_concurrency - see also navbar_async, navbar_python_concurrency, navbar_golang_concurrency, navbar_java_concurrency)
Golang Programming Language, Golang Compiler, Golang Go Toolchain, Golang Go Command, Golang Module System, Golang Goroutine, Golang Channel, Golang Package, Golang Import Path, Golang GOPATH, Golang GOROOT, Golang Go Mod File, Golang Go Sum File, Golang go.mod Syntax, Golang go.sum Integrity, Golang Main Package, Golang Main Function, Golang Func Keyword, Golang Struct Type, Golang Interface Type, Golang Map Type, Golang Slice Type, Golang Array Type, Golang String Type, Golang Rune Type, Golang Byte Type, Golang Error Interface, Golang Custom Error, Golang Defer Keyword, Golang Panic Function, Golang Recover Function, Golang Concurrency Model, Golang WaitGroup, Golang Mutex, Golang RWMutex, Golang Sync Package, Golang Context Package, Golang WithCancel Function, Golang WithTimeout Function, Golang WithDeadline Function, Golang WithValue Function, Golang Interface{} Type, Golang Empty Interface, Golang Type Assertion, Golang Type Switch, Golang Goroutine Scheduler, Golang Garbage Collector, Golang Race Detector, Golang gofmt Tool, Golang golint Tool (deprecated), Golang go vet Tool, Golang gopls Language Server, Golang go test Command, Golang go build Command, Golang go run Command, Golang go get Command, Golang go install Command, Golang go generate Command, Golang go clean Command, Golang go list Command, Golang go doc Command, Golang go fix Command, Golang go mod tidy Command, Golang go mod vendor Command, Golang go mod download Command, Golang go work File, Golang Module Proxy, Golang GOSUMDB Environment Variable, Golang GOPROXY Environment Variable, Golang GOPRIVATE Environment Variable, Golang Vendor Directory, Golang Vendoring, generate Directive, embed Directive, Golang Internal Packages, Golang Init Function, Golang Build Constraints, Golang build tags, Golang cgo Integration, Golang cgo Comment Syntax, Golang CGO_ENABLED Flag, Golang cgo Linking, linkname Directive, Golang Testing Package, Golang Test Function Convention, Golang Benchmark Function Convention, Golang Example Function Convention, Golang testing.T, Golang testing.B, Golang testing.M, Golang testing.Run, Golang testmain Generation, Golang Coverage Profiling, Golang CPU Profiling, Golang Memory Profiling, Golang Block Profiling, Golang Mutex Profiling, Golang Trace Tool, Golang pprof Tool, Golang net/http/pprof Package, Golang net/http Package, Golang http.ListenAndServe, Golang http.Handler Interface, Golang http.HandlerFunc Type, Golang http.ServeMux, Golang http.Client, Golang http.Transport, Golang http.RoundTripper, Golang http.Cookie, Golang URL Parsing, Golang URL Values, Golang JSON Encoding/Decoding, Golang encoding/json Package, Golang Marshal Function, Golang Unmarshal Function, Golang json.RawMessage, Golang YAML Integration (third-party), Golang TOML Integration (third-party), Golang XML Encoding/Decoding, Golang encoding/xml Package, Golang CSV Encoding/Decoding, Golang encoding/csv Package, Golang ProtoBuf Integration (third-party), Golang gRPC Integration (Go Module), Golang RPC Package (net/rpc), Golang Bufconn (grpc testing), Golang gob Encoding Package, Golang tar Package, Golang zip Package, Golang fmt Package, Golang Printf Function, Golang Println Function, Golang Sprint Function, Golang Sprintf Function, Golang Errorf Function, Golang log Package, Golang log.Printf, Golang log.Fatal, Golang log.Panic, Golang log.SetFlags, Golang log.SetOutput, Golang log.Ldate, Golang log.Ltime, Golang log.Lmicroseconds, Golang log.Llongfile, Golang log.Lshortfile, Golang log.LUTC, Golang io Package, Golang io.Reader Interface, Golang io.Writer Interface, Golang io.Closer Interface, Golang io.ReadCloser, Golang io.WriteCloser, Golang io.ReadSeeker, Golang io.ReadWriteCloser, Golang io.Copy Function, Golang io.TeeReader, Golang io.LimitedReader, Golang io.Pipe, Golang bufio Package, Golang bufio.Reader, Golang bufio.Writer, Golang bufio.Scanner, Golang Scanner.Split, Golang bufio.ReadString, Golang bufio.ReadBytes, Golang ioutil Package (deprecated), Golang io/fs Package, Golang fs.File Interface, Golang fs.FS Interface, Golang os Package, Golang os.File Type, Golang os.Open Function, Golang os.Create Function, Golang os.Stat Function, Golang os.Remove Function, Golang os.Rename Function, Golang os.Mkdir Function, Golang os.Chdir Function, Golang os.Getenv Function, Golang os.Setenv Function, Golang os.Exit Function, Golang os.Getpid Function, Golang os.Getppid Function, Golang os.UserHomeDir Function, Golang runtime Package, Golang runtime.GOMAXPROCS, Golang runtime.NumGoroutine, Golang runtime.Caller, Golang runtime.Callers, Golang runtime.Stack, Golang runtime/debug Package, Golang runtime.ReadMemStats, Golang runtime.GC, Golang reflect Package, Golang reflect.Type, Golang reflect.Value, Golang reflect.Kind, Golang reflect.StructField, Golang reflect.Method, Golang reflect.DeepEqual, Golang reflect.ValueOf, Golang reflect.TypeOf, Golang reflect.SliceOf, Golang reflect.MapOf, Golang reflect.ChanOf, Golang reflect.New, Golang reflect.Indirect, Golang reflect.MakeFunc, Golang sync.WaitGroup, Golang sync.Mutex, Golang sync.RWMutex, Golang sync.Once, Golang sync.Cond, Golang sync.Pool, Golang atomic Package, Golang atomic.AddInt32, Golang atomic.AddInt64, Golang atomic.AddUint32, Golang atomic.AddUint64, Golang atomic.AddUintptr, Golang atomic.LoadInt32, Golang atomic.LoadInt64, Golang atomic.LoadUint32, Golang atomic.LoadUint64, Golang atomic.StoreInt32, Golang atomic.StoreInt64, Golang atomic.StoreUint32, Golang atomic.StoreUint64, Golang atomic.SwapInt32, Golang atomic.CompareAndSwapInt32, Golang time Package, Golang time.Time Type, Golang time.Duration Type, Golang time.Now Function, Golang time.Sleep Function, Golang time.After Function, Golang time.Tick Function, Golang time.NewTimer, Golang time.NewTicker, Golang time.Parse Function, Golang time.ParseDuration Function, Golang time.Format Function, Golang time.Unix Function, Golang math Package, Golang math/rand Package, Golang rand.Seed, Golang rand.Intn, Golang rand.Float64, Golang rand.NewSource, Golang strings Package, Golang strings.Trim, Golang strings.Split, Golang strings.Join, Golang strings.Contains, Golang strings.Replace, Golang strings.ToLower, Golang strings.ToUpper, Golang strings.HasPrefix, Golang strings.HasSuffix, Golang strconv Package, Golang strconv.Itoa, Golang strconv.Atoi, Golang strconv.ParseInt, Golang strconv.ParseFloat, Golang strconv.FormatInt, Golang strconv.FormatFloat, Golang path Package, Golang path/filepath Package, Golang filepath.Join, Golang filepath.Walk, Golang filepath.Abs, Golang filepath.Base, Golang filepath.Dir, Golang filepath.Ext, Golang filepath.Glob, Golang unicode Package, Golang unicode/utf8 Package, Golang utf8.RuneCountInString, Golang utf8.DecodeRuneInString, Golang unicode.IsLetter, Golang unicode.IsDigit, Golang unicode.ToUpper, Golang unicode.ToLower, Golang regex Integration (regexp), Golang regexp Package, Golang regexp.Compile, Golang regexp.MatchString, Golang regexp.ReplaceAllString, Golang regexp.FindStringSubmatch, Golang sort Package, Golang sort.Ints, Golang sort.Strings, Golang sort.Slice, Golang sort.Search, Golang hash Package, Golang hash/crc32 Package, Golang hash/crc64 Package, Golang hash/adler32 Package, Golang hash/fnv Package, Golang crypto Package, Golang crypto/md5 Package, Golang crypto/sha1 Package, Golang crypto/sha256 Package, Golang crypto/sha512 Package, Golang crypto/hmac Package, Golang crypto/rand Package, Golang crypto/tls Package, Golang crypto/x509 Package, Golang crypto/ecdsa Package, Golang crypto/rsa Package, Golang os/exec Package, Golang exec.Command, Golang exec.CommandContext, Golang exec.LookPath, Golang os/signal Package, Golang signal.Notify, Golang signal.Stop, Golang syscall Package, Golang syscall.Kill, Golang syscall.SIGTERM, Golang syscall.SIGINT, Golang build tags, Golang CGO Integration, Golang _test.go Files, Golang Benchmark Functions, Golang TestMain Function, Golang Example Functions in test, Golang testdata Directory, Golang doc.go Files, Golang internal Packages, Golang vendor Directory, Golang GOPROXY Setting, Golang GOPRIVATE Setting, Golang GOPATH Layout, Golang GOBIN Setting, Golang GOCACHE Setting, Golang GOMODCACHE Directory, Golang sum.golang.org, Golang go1.x Versions, build Lines, embed Directive, Golang embed Package, Golang embed.FS, Golang embed Files, Golang template Package, Golang text/template, Golang html/template, Golang template.ParseFiles, Golang template.Execute, Golang template.FuncMap, Golang net Package, Golang net.Listen, Golang net.Dial, Golang net.IP, Golang net.TCPAddr, Golang net.UDPAddr, Golang net.Listener, Golang net.Conn, Golang net.Interface, Golang net/http.DefaultServeMux, Golang net/http.Client.Do, Golang net/http.Request, Golang net/http.Response, Golang net/http.Handle, Golang net/http.HandleFunc, Golang net/http.ServeTLS, Golang net/http.ServeFile, Golang net/url Package, Golang url.Parse, Golang url.URL Type, Golang url.Values, Golang mime Package, Golang mime.TypeByExtension, Golang mime/multipart Package, Golang mime/multipart.Form, Golang mime/multipart.File, Golang mime/multipart.Writer, Golang mime/multipart.Reader, Golang encoding/base64 Package, Golang base64.StdEncoding, Golang base64.URLEncoding, Golang base64.RawStdEncoding, Golang encoding/hex Package, Golang hex.EncodeToString, Golang hex.DecodeString, Golang image Package, Golang image/png Package, Golang image/jpeg Package, Golang color.Color Interface, Golang color.RGBA, Golang image.NewRGBA, Golang image.NewGray, Golang image/draw Package, Golang context.Context, Golang context.Background, Golang context.TODO, Golang context.WithCancel, Golang context.WithDeadline, Golang context.WithTimeout, Golang context.WithValue, Golang build Import Paths, Golang cross-compilation, Golang GODEBUG Settings, Golang runtime.NumCPU, Golang runtime.GOARCH, Golang runtime.GOOS, Golang reflect.DeepEqual, Golang unsafe Package, Golang unsafe.Pointer, Golang unsafe.Sizeof, Golang unsafe.Alignof, Golang unsafe.Offsetof, Golang go/ast Package, Golang go/parser Package, Golang go/token Package, Golang go/types Package, Golang ast.File, Golang parser.ParseFile, Golang token.FileSet, Golang token.Pos, Golang go/build Package, Golang go/build.Context, Golang build.Default, Golang build.Import, Golang syscall.Exit, Golang go/format Package, Golang format.Node, Golang runtime.Stack Function, Golang runtime.Goexit, Golang runtime.GCPercent, Golang runtime.StackGuard, Golang reflect.PointerTo, Golang reflect.MakeSlice, Golang reflect.MakeMap, Golang reflect.MakeChan, Golang reflect.SelectCase, Golang reflect.Select, Golang reflect.ChanDir, Golang reflect.InterfaceData, Golang reflect.MethodByName, Golang reflect.StructTag, Golang reflect.Value.Cap, Golang reflect.Value.Len, Golang reflect.Value.Index, Golang reflect.Value.Field, Golang reflect.Value.Set, Golang reflect.Value.Convert, Golang net.DialContext, Golang net.ListenConfig, Golang net.Resolver, Golang net.Dialer, Golang net.TLSConn, Golang net/url.UserInfo, Golang html/template.ParseGlob, Golang html/template.ParseFiles, Golang html/template.New, Golang html/template.Must, Golang html/template.HTML, Golang text/template.New, Golang text/template.Must, Golang text/template.ParseGlob, Golang text/template.ParseFiles, Golang compress/gzip Package, Golang gzip.Writer, Golang gzip.Reader, Golang gzip.BestCompression, Golang gzip.BestSpeed, Golang compress/zlib Package, Golang compress/flate Package, Golang database/sql Package, Golang sql.DB, Golang sql.Stmt, Golang sql.Tx, Golang sql.Row, Golang sql.Rows, Golang sql.Open, Golang sql.Drivers, Golang context cancellation, Golang context timeout, Golang context deadlines, Golang os.FileMode, Golang os.FileInfo, Golang os.ReadDir, Golang os.ReadFile, Golang os.WriteFile, Golang os.UserConfigDir, Golang os.UserCacheDir, Golang syslog Package (deprecated), Golang runtime.GOROOT, Golang runtime.Version, Golang runtime.MemStats, Golang runtime.LockOSThread, Golang runtime.UnlockOSThread, Golang runtime.GCStats, Golang runtime.NumCgoCall, Golang runtime.ReadTrace, Golang runtime/trace Package, Golang trace.Start, Golang trace.Stop, Golang math/big Package, Golang big.Int, Golang big.Rat, Golang big.Float, Golang net.IPNet, Golang net.IPMask, Golang net.ParseIP, Golang net.ParseCIDR, Golang net.InterfaceAddrs, Golang net/http.CookieJar, Golang net/http.Client.Timeout, Golang net/http.Client.Transport, Golang net/http.Server, Golang net/http.FileServer, Golang net/http.StripPrefix, Golang net/http.HandleFunc, Golang net/http.NotFound, Golang encoding/gob Package, Golang gob.Register, Golang gob.NewDecoder, Golang gob.NewEncoder, Golang sync/atomic Package, Golang atomic.Value, Golang atomic.Load, Golang atomic.Store, Golang math.Ceil, Golang math.Floor, Golang math.Sqrt, Golang math.Pow, Golang math.Log, Golang math.Sin, Golang math.Cos, Golang math.Tan, Golang math.NaN, Golang math.Inf, Golang go/constant Package, Golang go/importer Package, Golang go/printer Package, Golang go/scanner Package, Golang go/format Node, Golang path.Clean, Golang path.Base, Golang path.Dir, Golang path.Ext, Golang path.Join, Golang path.Split, Golang path.Match, Golang runtime/metrics Package, Golang runtime/trace.StartRegion, Golang runtime/trace.EndRegion, Golang runtime/trace.Log, Golang runtime/debug.FreeOSMemory, Golang runtime/debug.SetGCPercent, Golang runtime/debug.ReadGCStats, Golang runtime/debug.WriteHeapDump, Golang testing.M Main, Golang testing.Bench, Golang testing.Short, Golang testing.Verbose, Golang testing.TempDir, Golang testing.T.Cleanup, Golang testing.T.Parallel, Golang testing.T.Run, Golang testing.B.Run, Golang testing.B.ReportAllocs, Golang testing.B.ResetTimer, Golang flag Package, Golang flag.String, Golang flag.Int, Golang flag.Bool, Golang flag.Parse, Golang os.Chmod, Golang os.Chown, Golang os.File.Readdir, Golang os.File.Sync, Golang os.Stdin, Golang os.Stdout, Golang os.Stderr, Golang runtime.KeepAlive, Golang runtime.GCStats.PauseTotalNs, Golang runtime.SetFinalizer, Golang runtime.MemProfile, Golang runtime.BlockProfile, Golang runtime.CPUProfile, Golang runtime/pprof Package, Golang pprof.StartCPUProfile, Golang pprof.StopCPUProfile, Golang pprof.WriteHeapProfile, Golang pprof.Lookup, Golang net/http/httptest Package, Golang httptest.NewServer, Golang httptest.NewRecorder, Golang httptest.ResponseRecorder, Golang image/color Palette, Golang image/color Model, Golang image/color.Gray, Golang image/color.RGBA64, Golang image.Config, Golang image.Decode, Golang image.RegisterFormat, Golang text/scanner Package, Golang scanner.Scanner, Golang scanner.Position, Golang scanner.TokenText, Golang scanner.Whitespace, Golang scanner.IsIdentRune, Golang text/tabwriter Package, Golang tabwriter.Writer, Golang tabwriter.AlignRight, Golang tabwriter.FilterHTML, Golang tabwriter.DiscardEmptyColumns, Golang tabwriter.NewWriter, Golang context.ErrCanceled, Golang context.ErrDeadlineExceeded, Golang time.AfterFunc, Golang time.Until, Golang time.NewTicker.Stop, Golang time.NewTimer.Stop, Golang reflect.Swapper, Golang reflect.Value.CanAddr, Golang reflect.Value.CanSet, Golang reflect.Value.Interface, Golang reflect.Value.Pointer, Golang reflect.Type.Elem, Golang reflect.Type.NumField, Golang reflect.Type.Field, Golang reflect.Type.NumMethod, Golang reflect.Type.Method, Golang reflect.Type.Comparable, Golang reflect.Type.ConvertibleTo, Golang reflect.Type.Implements, Golang reflect.Type.AssignableTo, Golang reflect.Type.Bits, Golang reflect.Type.Len, Golang reflect.Type.Cap, Golang reflect.Type.ChanDir, Golang reflect.Type.Key, Golang reflect.Type.Name, Golang reflect.Type.PkgPath, Golang reflect.Type.String, Golang reflect.SelectRecv, Golang reflect.SelectSend, Golang reflect.SelectDefault, Golang runtime.LockOSThread
SHORTEN THIS to 20 ITEMS! navbar_golang
Abstract Syntax Trees, Absolute Time, Advanced Go Concurrency Patterns, Alias Declarations, Alternate Package Names, Anonymous Fields, Anonymous Functions, Append Function, Array Types, Assertion of Types, Assignability Rules, Atomic Package, Augmented Assignment, Authentication with Context, Auto-Increment Versions, Backward Compatibility, Basic Types, Benchmark Functions, Binary Package, Blank Identifier, Block Statements, Boolean Expressions, Bridge Methods, Build Constraints, Build Tags, Builtin Functions, Byte Order, Byte Slices, Bytes Package, Caching Modules, Cancellation with Context, Cap Function, Channel Direction, Channel Operations, Channel Types, Channels, Character Literals, Closure Functions, Code Generation, Code Formatting, Code Review Comments, Collecting Garbage, Composite Literals, Composition over Inheritance, Concurrency Patterns, Conditional Compilation, Constant Declarations, Constant Expressions, Context Package, Continue Statements, Control Flow, Convert Function, Copy Function, Cross Compilation, Cyclic Dependencies, Cyclic Imports, Data Alignment, Data Race Detection, Deadlock Detection, Defer Statements, Deferred Function Calls, Deleting Map Entries, Dependency Management, Design Philosophy, Detecting Deadlocks, Directive Comments, Directory Structure, Discarded Errors, Documentation Comments, Dot Imports, Dynamic Linking, Effective Go, Empty Interface, Embedding Interfaces, Embedding Structs, Embedded Files, Encoding Binary, Encoding CSV, Encoding JSON, Encoding XML, Endianness, Enforcing Contracts, Error Handling, Error Interface, Error Types, Escape Analysis, Executable Packages, Exit Codes, Expvar Package, Exported Names, Expression Statements, Extending Interfaces, External Linking, Fallthrough Keyword, Fatal Errors, Field Tags, File Inclusion, File I/O, File Paths, First-Class Functions, Floating-Point Numbers, FMT Package, For Loops, Format Specifiers, Formatting Source Code, Function Declarations, Function Literals, Function Types, Functional Options, Garbage Collection, GC Tuning, Generics, Global Variables, Go Build Command, Go Command, Go Concurrency Patterns, Go Doc Tool, Go FMT Tool, Go Generate Command, Go Get Command, Go Install Command, Go Modules, Go Playground, Go Run Command, Go Test Command, Go Toolchain, Go Vet Tool, Go Workspaces, GOB Encoding, Godoc Documentation, Gofmt Formatting, Goroutine Leaks, Goroutines, Gosec Security Scanner, GOTRACEBACK Environment Variable, Gotype Tool, GOVERSION File, Gowork Files, Heap Allocation, Heap Dump, HTML Templates, IOTA Identifier, Iota Enumerations, IO Package, IO Reader, IO Writer, Import Declarations, Import Paths, Imports Formatting, Incremental Compilation, Indentation Rules, Index Expressions, Indexed Elements, Initialization Order, Init Functions, Input Validation, Integer Overflow, Integer Types, Integration Testing, Interface Assertions, Interface Embedding, Interface Satisfaction, Interface Types, Internal Packages, Internationalization, Interoperability with C, Invariably Safe Initialization, IO Utility Functions, JSON Marshalling, JSON Unmarshalling, Keywords, Lambda Functions, Language Specification, Lateral Type Inference, Lazy Initialization, Leaking Goroutines, Len Function, Linter Tools, Literal Types, Live Variable Analysis, Load Testing, Logging Conventions, Logging Package, Loop Control Statements, Magic Comments, Make Function, Map Types, Maps, Memory Allocation, Memory Model, Memory Profiling, Method Declarations, Method Expressions, Method Sets, Methods, Module Compatibility, Module Caching, Module Proxy, Module Replacements, Module Versions, Module-aware Mode, Modules, Mutexes, Named Return Values, Name Mangling, Name Resolution, Name Shadowing, Naming Conventions, Nesting Structs, Net HTTP Package, Net Package, Nil Interface, Nil Pointer Dereference, Nil Slices, Nil Values, Non-Blocking Channels, Number Literals, Object Files, Octal Literals, Open Source License, Operator Precedence, Optimization Flags, Order of Evaluation, OS Package, Package Documentation, Package Initialization, Package Names, Package Visibility, Packages, Packages with Main, Panic and Recover, Panic Defer Recover, Parallel Testing, Parsing Techniques, Path Separators, Performance Optimization, Performance Profiling, Pipeline Patterns, Plain Functions, Pointer Arithmetic, Pointer Receivers, Pointers, Polymorphism, Portability, Postfix Operators, Predeclared Identifiers, Predefined Constants, Preemption in Scheduler, Primitive Types, Print Functions, Profiling Tools, Project Layout, Protobuf Integration, Public and Private Identifiers, Punctuator Tokens, Race Conditions, Race Detector, Range Expressions, Range Loops, Read-Only Interfaces, Receiver Functions, Receiver Types, Recover Function, Recursion, Reflection, Regular Expressions, Relative Imports, Relocation Information, Remote Import Paths, Repeatable Builds, Replace Directive, Reserved Words, Resource Management, Response Writers, RESTful APIs, Return Statements, Reusing Code, Rune Literals, Runes, Runtime Package, Satisfying Interfaces, Scopes, Select Statements, Selective Imports, Self-Referential Functions, Semaphore Patterns, Send-Only Channels, Shadowing Variables, Short Declarations, Signals Handling, Signed Integers, Simple Statements, Single Assignment, Single Binary Applications, Slice Expressions, Slice Internals, Slice Length and Capacity, Slice of Slices, Slices, Source File Organization, Source to Source Compilation, Space Optimization, Spawned Processes, Specification Compliance, Split Package, Sprint Functions, Stack Traces, Standard Library, Static Analysis, Static Linking, String Conversions, String Formatting, String Literals, Strings Package, Struct Embedding, Struct Literals, Struct Tags, Struct Types, Structs, Subtests, Switch Statements, Synchronization Primitives, Syntactic Sugar, System Calls, Tab Characters, TCP Connections, Template Parsing, Template Rendering, Template Syntax, Templates Package, Ternary Operators, Testing, Testing Package, Text Templates, Third-Party Packages, Thread Safety, Time Package, Timeouts, TLS Configuration, Tokenization, Toolchain, Trace Tool, Tracing, Tracking Dependencies, Type Aliases, Type Assertions, Type Declarations, Type Embedding, Type Inference, Type Parameters, Type Switches, Typed Constants, Types, UID and GID, Unhandled Errors, Unicode Characters, Unicode Package, Unique Package Names, Unsafe Package, Unstructured Concurrency, Untyped Constants, Unused Imports, Unused Variables, Update Statements, URL Parsing, UTF-8 Encoding, Value Receivers, Variable Declarations, Variadic Functions, Vendor Directory, Vendoring, Version Control, Version Pinning, Visibility Rules, WaitGroup, Walkthrough Examples, Web Applications, Whitespace Rules, Wildcards in Imports, Write Barriers, Zero Initialization, Zero Values
Golang: Golang Fundamentals, Golang Inventor - Golang Language Designer: Ken Thompson, Robert Griesemer, Rob Pike of Google, Go abstraction, Golang Glossary - Glossaire de Golang - French, Go agile, Go ahead-of-time (AOT), Go AI, Go algebraic data types, Go algorithms, Go Android, Go anonymous functions, Go AOP, Go AOT, Go APIs, Go arguments, Go ARM, Go arithmetic, Go arrays, Go aspect-oriented, Go assignment, Go associative arrays, Go async, Go asynchronous callbacks, Go asynchronous programming, Go automatic variables, Go automation, Go Avro, Go backend, Go backwards compatibility, Go block scoped, Go Booleans, Go Boolean expressions, Go buffer overflow, Go builds, Go built-in types, Go bytecode, Go cache, Go caching, Go call by reference, Go call by value, Go callbacks, Go call stack, Go casting, Go characters, Go Chocolatey, Go CI/CD, Go classes, Go CLI, Go client-side, Go closures, Go cloud (Go Cloud Native-Go AWS-Go Azure-Go GCP-Go IBM Cloud-Go IBM Mainframe-Go OCI), Go code smells, Go coercion, Go collections, Go command-line interface, Go commands, Go comments, Go compilers, Go complex numbers, Go composition, Go configuration, Go concurrency, Go concurrent programming, Go conditional expressions, Go conferences, Go constants, Go constructors, Go containers, Go control flow, Go control structures, Go coroutines, Go crashes, Go creators, Go currying, Go databases, Go data manipulation, Go data persistence, Go data science, Go data serialization, Go Built-In Data Types, Go data structures, Go data synchronization, Go dates, Go dates and times, Go deadlocks, Go debugging, Go declarative, Go deferred callbacks, Go delegates, Go delegation, Go dependency injection, Go design patterns, Go designers, Go destructors, Go DevOps, Go dictionaries, Go dictionary comprehensions, Go DI, Go distributed software, Go distributions, Go distros, Go DL, Go Docker, Go do-while, Go DSL, Go duck typing, Go dynamic binding, Go dynamic scope, Go dynamically scoped, Go dynamically typed, Go dynamic variables, Go eager evaluation, Go embedded, Go encapsulation, Go encryption, Go enumerated types, Go enumeration, Go enums, Go environment variables, Go errors, Go error handling, Go evaluation strategy, Go event-driven, Go event handlers, Go event loops, Go exception handling, Go executables, Go execution, Go expressions, Go FaaS, Go Facebook, Go fibers, Go fields, Go file input/output, Go file synchronization, Go file I/O, Go filter, Go first-class functions, Go fold, Go foreach loops, Go fork-join, Go floating-point, Go FP, Go frameworks, Go FreeBSD, Go frontend, Go functions, Go functional, Go functional programming, Go function overloading, Go garbage collection, Go generators, Go generator expressions, Go generics, Go generic programming, Go GitHub, Go global variables, Go GraphQL, Go gRPC, Go GUI, Go hashing, Go heap, Go heap allocation, Go hello world, Go higher-order functions, Go history, Go Homebrew, Go HTTP, Go idempotence, Go IDEs, Go import, Go imperative, Go immutable values, Go immutability, Go inheritance, Go influenced, Go influenced by, Go installation, Go integers, Go integration testing, Go interfaces, Go internationalization, Go interpreters, Go interprocess communication (IPC), Go iOS, Go IoT, Go IPCs, Go ISO Standard, Go iteration, Go JetBrains, Go JIT, Go JSON, Go JSON-RPC, Go JSON Web Tokens, Go JSON Web Token (JWT), Go Just-in-time (JIT), Go JWT, Go K8S, Go keywords, Go lambdas, Go language spec, Go lazy evaluation, Go lexically scoped, Go lexical scoping, Go libraries, Go linters, Go Linux, Go lists, Go list comprehensions, Go literals, Go localization, Go local variables, Go locks, Go logging, Go logo, Go looping, Go macOS, Go map, Go mascot, Go math, Go member variables, Go memoization, Go memory addressing, Go memory allocation, Go malloc, Go memory management, Go memory safety, Go message queues, Go metaclasses, Go meta-programming, Go methods, Go method overloading, Go MFA, Go ML, Go microservices, Go Microsoft, Go mobile dev, Go modules, Go modulo operators, Go monitoring, Go multiprocessing, Go multi-threaded, Go mutable values, Go mutability, Go mutex (Go mutual exclusion), Go namespaces, Go natural language processing (NLP), Go networking, Go network programming, Go NLP, Go non-blocking, Go non-blocking I/O, Go null, Go null reference, Go null coalescing operators, Go numbers, Go number precision, Go OAuth, Go objects, Go object code, Go object comparisons, Go object creation, Go object creators, Go object destruction, Go object destructors, Go object lifetime, Go object-oriented constructors, Go object-oriented programming, Go object serialization, Go observability, Go OOP, Go operators, Go operator overloading, Go optimizations, Go organizations, Go ORMs, Go packages, Go package managers, Go pass by reference, Go pass by value, Go parallel computing, Go parallel programming, Go parallelism, Go parameters, Go people, Go performance, Go persistence, Go pipelines, Go pointers, Go polymorphism, Go primitives, Go primitive data types, Go probability, Go procedural, Go processes, Go producer-consumer, Go programmers, Go programming, Go programming paradigm, Go program structure, Go program termination, Go Protocol Buffers (Protobuf), Go Protocol Buffers, Go Protobuf, Go proxies, Go public-key encryption, Go PKI, Go pure functions, Go race conditions, Go random, Go reactive, Go readability, Go records, Go recursion, Go reentrancy, Go refactoring, Go reference counting, Go reference types, Go referential transparency, Go reflection, Go regex, Go remote procedure calls (RPC), Go REPL, Go reserved words, Go REST, Go REST APIs, Go RHEL, Go RPCs, Go runtimes, Go safe navigation operators, Go SDK, Go secrets, Go security, Go serialization, Go serverless, Go server-side, Go sets, Go set comprehensions, Go side effects, Go signed integers, Go SMTP, Go Snapcraft, Go social media, Go sockets, Go source code, Go source-to-source compiler, Go SQL, Go SSL - Go SSL-TLS, Go Single sign-on (SSO), Go SSO, Go StackOverflow, Go stack, Go stack allocation, Go Stack overflow, Go standards, Go standard errors, Go standard input, Go standard library, Go standard operators, Go standard output, Go state, Go statements, Go strings, Go string concatenation, Go string functions, Go string operations, Go scheduling, Go scientific notation, Go scope, Go scope rules, Go scoping, Go scripting, Go static analyzers, Go statically scoped, Go static scoping, Go statically typed, Go static variables, Go statistics, Go strongly typed, Go structural typing, Go synchronization, Go syntax, Go systems programming, Go TCP/IP, Go TDD, Go testing, Go test frameworks, Go threads, Go thread-local storage (TLS), Go TLS, Go thread locking, Go thread locks, Go thread safety, Go thread scheduling, Go thread synchronization, Go times, Go timers, Go to JavaScript, Go tools, Go toolchain, Go transpiler, Go transpiling to JavaScript, Go truth values, Go tuples, Go type checking, Go type conversion, Go type inference, Go type safety, Go type system, Go web dev, Go while loops, Go work stealing, Go values, Go value types, Go variables, Go variable lifetime, Go variable scope, Go versions, Go virtual environments, Go virtual machine, Go Ubuntu, Go Unicode, Go unit testing, Go unsigned integers, Go usability, Go weakly typed, Go Windows, Go wrappers, Go written using, Go x86-64-Go AMD64, Go XML, Go YAML, Go Awesome list;
Go topics-Go courses-Go books-Go docs. (navbar_golang and navbar_golang_detailed)