Go语言技术文章
-
Go 泛型调用省略类型参数时,编译器要从实参、函数签名和约束中建立类型关系。本文用可编译示例说明推断成功与失败的边界,以及何时补写显式类型参数。450 收藏 -
Go 配置文件不要直接截断原文件,推荐先在同目录临时文件中写完并同步,再用 os.Rename 替换目标文件,同时处理关闭、清理、并发和跨平台边界。450 收藏 -
围绕 database/sql Rows 生命周期,讲清 QueryContext、Next、Scan、Err、Close 的职责边界,以及空结果、NULL、提前返回和迭代错误的处理方式。450 收藏 -
Go 里值接收者和指针接收者的选择,不只影响是否能修改对象,还会影响类型能不能满足接口。值方法通常同时属于值和指针的方法集,指针方法只属于指针的方法集。要修改对象、避免大结构体拷贝或保持方法接收者一致时,优先用指针接收者;小型不可变值可以用值接收者。449 收藏 -
Go embed.FS 读取内嵌资源时,fs.Sub 的根路径、文件名斜杠和 os.Getwd 工作目录经常被混在一起。本文用一个可运行的小实验定位“文件明明在项目里却读不到”的原因,并给出模板、测试和部署检查写法。449 收藏 -
Go 中 nil 切片和空切片的 len 都是 0,但 reflect.DeepEqual 会因为 nil 状态不同返回 false。本文用最小示例解释原因,并比较 DeepEqual、slices.Equal 与规范化写法的适用边界。449 收藏 -
用 fs.FS 统一 Go 对磁盘目录和 embed.FS 的读取,讲清 fs.ReadFile、os.DirFS、fs.Sub、路径规则与错误边界。449 收藏 -
Golang · Go问答 | 1个月前 | WaitGroup · golang · goroutine · 并发编程 · Go问答 · Go 1.25 · Goroutine 并发 WaitGroup Go 1.25 sync.WaitGroup.Go Add Done
Go 1.25 为 sync.WaitGroup 增加了 Go 方法,常见的 Add、go func、defer Done 三段式可以收成一次调用。它能减少计数配对遗漏,却不会替业务处理 panic、取消或结果收集。本文用批量写入场景解释最小写法、和旧写法的边界差异、版本兼容与复用 WaitGroup 时容易忽略的顺序。448 收藏 -
unsafe.StringData 可以让 Go 程序拿到字符串底层字节的指针,但这不等于获得了一块可长期持有、可修改的内存。本文用可运行的小实验区分指针有效期、字符串生命周期和只读边界,给出适合零拷贝场景的使用检查。448 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · 并发安全 · 配置管理 · Go教程 · 文件系统 · 配置热更新 os.Rename embed.FS Go embed fs.ReadFile
Go embed 适合把默认配置随二进制发布,但运行时热更新不能直接覆盖嵌入文件。本文用 embed.FS 读取默认值,再通过临时文件校验和 os.Rename 原子替换外部配置,处理并发读取、失败回滚与发布检查。448 收藏 -
Go replace 指向本地目录后 CI 找不到依赖,通常是替换路径在干净 runner 中不可见。本文用相对路径、go.work 和可访问模块三种方案说明如何修复,并给出提交前的反向检查。448 收藏 -
解释 Go go:linkname 与普通 import 的区别,定位 Go 1.23 标准库内部符号链接失败的原因,并给出公开 API、handshake 与最小验证建议。448 收藏 -
Go 的 go build -tags 支持以逗号分隔的方式指定多个构建标签(如 -tags=dev,sqlite,debug),从而精确控制哪些带 // +build 或 //go:build 约束的源文件参与编译;空格分隔方式已被弃用。 Go 的 `go build -tags` 支持以逗号分隔447 收藏 -
Golang · Go教程 | 2星期前 | goroutine · pprof · 性能分析 · Go教程 · 运行时 · Go label runtime/pprof Do ForLabels goroutine 归因
线上 CPU profile 只能告诉你哪里忙,却不一定能说明是哪类任务在忙。本文用 runtime/pprof 的 Label、Do、ForLabels 和 SetGoroutineLabels 给请求打上可检索的任务标签,并说明标签继承、覆盖、读取和采样查看的边界。447 收藏 -
Go 程序放进容器后,runtime.GOMAXPROCS 返回的并发上限和宿主机核数不一定相同。本文用运行时探针区分逻辑核、CPU 配额与调度上限,解释容器内核数判断的边界,并给出可复现的检查代码。447 收藏