Go 语言学习手册

免费学习 完整知识体系 快速检索

Go语言学习手册《sync 包:Mutex, WaitGroup, Once》:Go 的 sync 包提供了常用的同步原语。 **Mutex(互斥锁):** 保护共享资源。 ```go var mu sync.Mutex var count int func increment() { mu.Lock() ...

同步原语

sync 包:Mutex, WaitGroup, Once

【详细说明 & 代码示例】
Go 的 sync 包提供了常用的同步原语。 **Mutex(互斥锁):** 保护共享资源。 ```go var mu sync.Mutex var count int func increment() { mu.Lock() count++ mu.Unlock() } // 可用 RWMutex 提供读写锁 var rwmu sync.RWMutex // rwmu.RLock() / RUnlock() 允许多个读 ``` **WaitGroup:** 等待一组 goroutine 完成(已在前文示例)。 **Once:** 确保某函数仅执行一次(如初始化)。 ```go var once sync.Once once.Do(func() { fmt.Println("only once") }) ``` **Cond(条件变量):** 用于等待条件满足,较少直接使用。 **Atomic 包:** 提供原子操作(无锁)。 ```go import "sync/atomic" var counter int64 atomic.AddInt64(&counter, 1) val := atomic.LoadInt64(&counter) ``` **注意:** 优先使用 channel 通信,仅在必要时使用共享内存+锁。

学习提示:建议安装 Go 环境(go.dev/dl),使用 VS Code 或 GoLand 编写代码,并熟练使用 go run、go build、go mod 等命令。

全部章节目录(共 30 个知识点)

Go 基础 (1个知识点)

接口(interface) (1个知识点)

指针 (1个知识点)

错误处理 (1个知识点)

包管理 (1个知识点)

并发:goroutine (1个知识点)

并发:channel (1个知识点)

同步原语 (1个知识点)

网络与 HTTP (1个知识点)

测试与性能 (1个知识点)

反射与泛型 (1个知识点)

CGO 与汇编 (1个知识点)

Web 框架 (1个知识点)

数据库操作 (1个知识点)

配置与日志 (1个知识点)

部署与运维 (1个知识点)

使用说明

  • • 本手册涵盖 Go 语言从基础到并发实战、Web 服务的完整知识体系
  • • 在搜索框输入关键词,快速定位相关知识点
  • • 点击条目标题进入详情页,查看详细说明与代码示例
  • • 页面按分类展示所有知识点,方便系统性学习
  • • 建议安装 Go 环境并使用 VS Code 或 GoLand 进行实践