Skip to content

术语表 ​

本仓核心术语的中英对照、一句话定义与权威出处。出处均为官方文档、官方博客、语言规范或原论文,逐条可点;未能找到权威出处的条目如实标注。相关页链接指向本仓正文。

并发与运行时 ​

Goroutine(Go 协程) ​

轻量级执行单元,由 Go 运行时调度而非操作系统线程,初始栈很小、可大量并存。 出处:语言规范 · Go 语句、Effective Go · Goroutines相关页:Goroutine、GoroutineImpl

GMP 调度模型 ​

Go 运行时调度器的抽象:G(goroutine)、M(机器线程)、P(处理器,持有可运行 G 队列)。 出处:官方 · Go 调度器设计文档(golang.org/s/go11sched)相关页:GMP、Runtime

Channel(通道) ​

带类型的并发安全管道,可在 goroutine 之间收发值;无缓冲通道收发双方同步会合。 出处:语言规范 · 通道类型、Go 内存模型 · 通道、Effective Go · Channels相关页:Chan、ChanImpl

Select ​

多路等待多个通道操作的控制结构,可就绪的分支中随机选择一个执行。 出处:语言规范 · Select 语句相关页:Select

CSP(通信顺序进程) ​

Tony Hoare 提出的并发模型,Go 的并发设计哲学来源:「不要通过共享内存来通信,而要通过通信来共享内存」。 出处:Hoare 1978 原论文(CACM,DOI)、CSP 概览 · Wikipedia相关页:CSP、Actor

数据竞争(Data Race) ​

两个 goroutine 并发访问同一内存位置、至少一个是写、且没有同步协调——行为未定义。 出处:Go 内存模型、官方博客 · Introducing the Go Race Detector相关页:RaceCondition

Go 内存模型(Memory Model) ​

规定一个 goroutine 能否观察到另一个 goroutine 写入的值,核心是 happens-before 关系。 出处:Go 内存模型相关页:MemoryModel、MemorySynchronization

Happens-before ​

内存模型中的偏序关系:若 A happens-before B,则 A 的写对 B 可见。 出处:Go 内存模型相关页:MemoryModel

Mutex(互斥锁) ​

保证同一时刻只有一个 goroutine 进入临界区的锁,sync.Mutex。 出处:sync 标准库相关页:Mutex

RWMutex(读写锁) ​

允许多读单写的锁,读多写少场景吞吐更高,sync.RWMutex。 出处:sync 标准库相关页:RWMutex

WaitGroup ​

等待一组 goroutine 结束的计数栅栏,sync.WaitGroup。 出处:sync 标准库相关页:WaitGroup

Atomic(原子操作) ​

不可分割的底层内存原语,sync/atomic,是无锁算法的基石。 出处:sync/atomic 标准库、Go 内存模型 · 原子相关页:Atomic

临界区(Critical Section) ​

访问共享资源的代码段,需要互斥保护。 出处:Go 内存模型 · 锁相关页:CriticalSection

Context(上下文) ​

跨 API 边界传递取消信号、超时与请求范围值的标准载体,context.Context。 出处:context 标准库、官方博客 · Go Concurrency Patterns: Context相关页:Context

errgroup ​

golang.org/x/sync/errgroup:带错误传播与取消的 goroutine 组管理。 出处:golang.org/x/sync/errgroup相关页:ErrorGroup

Goroutine 泄漏 ​

goroutine 因阻塞在永不到来的通道操作上而无法退出,累积泄漏内存。 出处:官方博客 · Goroutine Leak Profiles相关页:GoroutineImpl、Pprof

Race Detector(竞态检测器) ​

基于 ThreadSanitizer 的动态竞态检测工具,go test -race。 出处:官方博客 · Introducing the Go Race Detector相关页:RaceCondition、Test

内存与垃圾回收 ​

GC(垃圾回收) ​

Go 运行时自动回收不可达堆内存的机制;并发、三色标记、低暂停。 出处:官方 · A Guide to the Go Garbage Collector相关页:GC、GC(内存分配篇)

三色标记 ​

GC 可达性分析的抽象:白(未访问)、灰(待扫描)、黑(已扫描)。 出处:官方 GC 指南 · GC 循环相关页:GC

混合写屏障 ​

Go 1.8 起的写屏障策略,把栈重扫需要的时间降到接近零。 出处:官方博客 · Go GC: Prioritizing low latency and simplicity相关页:GC

GOGC ​

控制 GC 触发时机的环境变量/参数:堆增长百分比。 出处:官方 GC 指南 · GOGC相关页:Practice

GOMEMLIMIT ​

堆内存软上限,GOMEMLIMIT 环境变量,防内存失控。 出处:官方 GC 指南 · Memory limit相关页:Practice

逃逸分析(Escape Analysis) ​

编译器判定对象分配在栈还是堆的分析;逃逸的对象由 GC 管理。 出处:官方 GC 指南 · 逃逸分析、官方博客 · Allocating on the Stack相关页:Segment、Alloc

零值(Zero Value) ​

变量声明后未显式赋值时的默认值,Go 保证变量总有确定初值。 出处:语言规范 · 零值相关页:VarAndInit

nil ​

预定义标识符:指针、通道、映射、切片、接口、函数类型的零值。 出处:语言规范 · 预定义标识符相关页:Nil

类型系统 ​

Slice(切片) ​

对底层数组的抽象:指针 + 长度 + 容量,可动态增长。 出处:语言规范 · 切片类型、官方博客 · Go Slices: usage and internals相关页:Slice

Append 扩容 ​

append 在容量不足时分配更大的底层数组并迁移元素。 出处:官方博客 · append 的机制相关页:Slice

Map(映射) ​

哈希表实现的键值容器,遍历顺序故意随机化,map[K]V。 出处:语言规范 · 映射类型、官方博客 · Go maps in action相关页:Map

Interface(接口) ​

方法签名的集合;Go 的隐式实现(结构化类型)不同于其他语言的名义实现。 出处:语言规范 · 接口类型、Effective Go · Interfaces相关页:Interface、Interface(OOP 篇)

方法集(Method Set) ​

类型关联的方法集合,决定接口满足关系;值接收者与指针接收者的方法集不同。 出处:语言规范 · 方法集相关页:PointerReceiver

类型断言(Type Assertion) ​

从接口值取出其动态类型的具体值,x.(T),可带 comma-ok 形式。 出处:语言规范 · 类型断言相关页:Assertion、TypeAssertion

类型开关(Type Switch) ​

对接口动态类型做多路分派的 switch x.(type)。 出处:语言规范 · 类型开关相关页:Switch

反射(Reflection) ​

运行时检视类型与值的能力,reflect 包;官方用「三定律」阐述。 出处:官方博客 · The Laws of Reflection、reflect 标准库相关页:Reflection

泛型(Generics) ​

类型参数化,Go 1.18 起;函数与类型可带类型参数与约束。 出处:官方博客 · An Introduction To Generics、语言规范 · 类型参数声明相关页:Generics

约束(Constraint) ​

类型参数必须满足的接口型条件,可用近似元素(~T)与联合(A|B)表达。 出处:官方博客 · When To Use Generics相关页:Constraints

类型推断(Type Inference) ​

编译器从实参推导类型参数的机制,泛型语法糖的核心。 出处:官方博客 · Type Inference相关页:TypeInference

嵌入(Embedding) ​

命名类型不带字段名地写入结构体/接口,获得转发与组合,Go 的「继承替代」。 出处:Effective Go · Embedding相关页:Embedding

闭包(Closure) ​

引用外层变量的函数字面量,func 表达式即函数值。 出处:语言规范 · 函数字面量相关页:AnonymousFunc

变参(Variadic Parameter) ​

参数列表末尾的 ...T 参数,调用方可传任意个数实参。 出处:语言规范 · 函数类型(变参)相关页:VariadicParameters

Iota ​

常量声明中的自增计数器,配合常量表达式生成枚举。 出处:语言规范 · Iota、官方博客 · Constants相关页:Iota

无类型常量(Untyped Constant) ​

不受具体类型约束的常量,精度无限,可隐式适配多种类型。 出处:官方博客 · Constants相关页:Cant

结构体标签(Struct Tag) ​

结构体字段上的元数据字符串,编码/解码与映射的约定载体。 出处:encoding/json 标准库 · 标签约定、官方博客 · JSON and Go相关页:StructTags

错误处理 ​

Error(错误) ​

error 内建接口:非 nil 即出错;Go 的错误是值,显式检查。 出处:语言规范 · Errors、官方博客 · Error handling and Go相关页:Error

错误包装(Error Wrapping) ​

fmt.Errorf 的 %w 动词与 errors.Is/As/Unwrap 链式检查。 出处:errors 标准库相关页:Errors

Defer ​

延迟到函数返回前执行的调用,栈式 LIFO,常配资源释放。 出处:语言规范 · Defer 语句、官方博客 · Defer, Panic, and Recover相关页:Defer

Panic / Recover ​

不可恢复错误的中断机制与捕获机制,成对出现于延迟调用中。 出处:官方博客 · Defer, Panic, and Recover、Effective Go · Recover相关页:PanicAndRecover

工程化 ​

Module(模块) ​

带版本号的包集合,go.mod 声明路径与依赖,Go 的依赖单元。 出处:官方 · Go Modules 使用指南、Go Modules Reference相关页:Mod

go.mod ​

模块根目录的声明文件:模块路径、Go 版本、require/exclude/retract。 出处:Go Modules Reference相关页:Init

最小版本选择(MVS) ​

Go 的依赖解析算法:为每个依赖选出满足所有需求的最小(最保守)版本。 出处:Go Modules Reference · 最小版本选择相关页:Mod

Workspace(工作区) ​

go.work 聚合多个本地模块协同开发,无需改 go.mod。 出处:官方教程 · 多模块工作区相关页:Work

工具链(Toolchain) ​

go 命令、编译器、标准库与相关工具的整体;支持多版本安装与自动切换。 出处:官方 · 安装与管理 Go 工具链相关页:Env、Install

Pprof ​

运行时性能剖析工具集:CPU、堆、goroutine、锁、trace。 出处:runtime/pprof 标准库、官方博客 · Profiling Go Programs相关页:Pprof

PGO(按配置优化) ​

用生产 profile 反哺编译器内联与布局决策的优化,Go 1.21 起。 出处:官方 · Profile-guided optimization、官方博客 · PGO in Go 1.21相关页:PGO

Fuzzing(模糊测试) ​

覆盖率引导的随机化测试,FuzzXxx(*testing.F),Go 1.18 起内建。 出处:官方 · Fuzzing相关页:Fuzz

死锁(Deadlock) ​

多个执行流互相等待对方持有的资源而永久阻塞。未找到官方单页权威出处(待核),运行时对全部 goroutine 均不可调度时会以 fatal error: all goroutines are asleep 报告;相关标准库口径见 sync 标准库。 相关页:CriticalSection、Chan

算法与数据结构 ​

动态数组 ​

容量按需倍增的变长数组,Go 切片即其工程化形态。 出处:动态数组 · Wikipedia、官方博客 · Go Slices相关页:DynamicArray

哈希表 ​

平均 O(1) 的键值容器,冲突处理决定性能形态。 出处:哈希表 · Wikipedia相关页:Hash、Map

红黑树 ​

自平衡二叉搜索树,插入/删除/查找 O(log n),Go map 的底层结构之一。 出处:红黑树 · Wikipedia相关页:RedBlackTree

跳表(Skip List) ​

多级链表实现的对数查找结构,Redis 有序集合的底层实现。 出处:跳表 · Wikipedia相关页:SkipList


维护口径:新增条目必须给出可点的权威出处(官方文档/规范/官方博客/原论文/标准库);查不到就写「未找到权威出处(待核)」,不得凭印象编造链接。

相关页面 ​

Hello Golang