Go语言技术文章
-
Go 32 位平台使用 64 位原子计数器时,普通 uint64 与 atomic.Uint64 的对齐责任不同。本文比较旧式原子函数、类型化原子对象和互斥锁的适用边界,给出结构体布局与兼容检查清单。195 收藏 -
比较Go database/sql结果集的自动关闭、defer和显式关闭,区分QueryContext、Scan、Err、Close的错误入口,用完整读取函数处理早退、迭代失败和关闭错误。195 收藏 -
filepath.Rel 只按路径字符串计算相对关系,不会替你解析符号链接。本文用 Go 标准库演示先统一解析根目录与目标路径,再计算相对路径,并拆开解析失败、路径不兼容和目标尚不存在等边界。193 收藏 -
调用方先准备递增有序的切片,把同一份缓冲区反复传给 slices.BinarySearch;文章说明如何区分命中索引、未命中插入位置和结果容器分配。193 收藏 -
Go crypto/ecdh.NewPublicKey 会按指定曲线校验公钥字节并返回 PublicKey。本文说明 NIST 曲线与 X25519 的编码边界、解析错误处理,以及如何在 ECDH 前保证本地私钥和对端公钥使用同一条曲线。192 收藏 -
bytes.Reader.Size 返回底层字节切片的原始长度,普通 Read 推进后它不会变化;真正表示当前未读数据的是 Len。本文用分段读取示例说明两个指标的区别,并给出进度计算、Reset 与 ReadAt 的边界。190 收藏 -
Go sort.Find 用二分查找返回有序数据中第一个满足比较条件的位置,并通过 found 区分是否精确命中。本文从三态比较函数、重复值、未找到边界和结构体切片几个场景说明怎样写对。187 收藏 -
在 Go 的 io/fs 接口前判断路径是否合规,重点说明 ValidPath 对 slash 分隔、未根路径、点段、空元素和根目录 . 的边界,并给出可直接复用的入口函数。187 收藏 -
context.Cause只读取取消原因,不会关闭资源或等待协程退出。文章区分取消信号、阻塞点、资源所有权和结束确认,并用文件导出示例说明如何安排cancel、Close与返回结果。187 收藏 -
Go image/jpeg 的 Options.Quality 取值范围是 1 到 100,默认值为 75。本文按缩略图、网页上传和归档等用途给出质量参数的选择起点,并说明 Encode 的传参、体积与细节的权衡,以及 PNG、透明图和反复编辑场景的边界。186 收藏 -
maps.Clone 返回新的浅拷贝,不能把已有 map 当作写入目标。若要反复刷新同一容器,应按需求使用 maps.Copy,要求精确替换时先 clear 再 Copy,并注意 slice、指针等 value 仍是浅拷贝。185 收藏 -
解释 runtime.NumCPU 与 runtime.GOMAXPROCS(0) 的差异来源,结合显式配置、CPU 亲和性、Linux cgroup CPU 限额和 Go 1.25 容器感知默认值,帮助排查时判断何时正常、何时需要调整。184 收藏 -
用 slog.HandlerOptions.Level 过滤 DEBUG 日志,并用 slog.LevelVar 在运行时切换最低级别,掌握默认 Logger、Enabled 和多 Handler 的边界。183 收藏 -
DB.Stats 的 MaxIdleClosed 是因 SetMaxIdleConns 关闭连接的累计次数,不等于连接泄漏。本文拆开空闲数量回收、空闲时间回收和生命周期回收的区别,并给出用 DBStats 快照排查连接池的 Go 写法。182 收藏 -
本文说明怎样使用 regexp/syntax.Parse 把 Go 正则模式解析成语法树,并递归读取 Op、Sub、Rune、Min、Max 与 Name,最后区分解析错误和后续匹配结果。182 收藏