Go语言技术文章
-
Go database/sql Tx 在 BeginTx 成功后注册 defer 回滚兜底,用提交成功标记明确收尾权,并保留业务、提交与清理错误。附原创封装示例与取消、panic 和提交失败的边界说明。330 收藏 -
Go hash/maphash 适合为当前进程内的字符串或字节键计算 uint64 哈希。本文从 Seed 的归属、String 与 Bytes 的选择、复合键规范化和并发边界入手,说明哪些结果可以用于分桶和索引,哪些用途不应依赖。330 收藏 -
Go embed 报 pattern 没有匹配文件,通常不是资源不存在,而是 pattern 相对目录、文件名大小写、扩展名或目录可见性与实际结构不一致。本文用最小示例拆解定位方法。330 收藏 -
Go 的 x/text/number.Percent 适合把 0 到 1 的比例值格式化为带百分号的本地化文本。本文从输入尺度开始,说明 message.Printer、Scale、Precision 和舍入边界怎样配合,并给出可复用的封装。330 收藏 -
用 Go 泛型拆解 type set、~底层类型与方法集的关系,说明为什么约束能参与类型运算却不一定能直接调用方法,并给出可编译的设计与验收方式。329 收藏 -
CloseIdleConnections 只清理 Transport 中已经空闲的 keep-alive 连接,不会打断正在使用的请求。文章用发布切换场景说明它与 Transport 复用、响应体关闭和灰度验证的边界。329 收藏 -
filepath.Clean 只处理路径字符串,不解析软链接、权限和真实文件系统状态。本文按路径生命周期解释 os.Root 仍会拒绝访问的原因,并给出可移植的校验与错误处理写法。329 收藏 -
Go 1.24 为 crypto/x509 增加证书策略验证后,证书链能建立并不代表满足指定策略 OID。本文从版本、Policies 字段、CertificatePolicies、策略图和中间证书集合五个方面定位失败原因。329 收藏 -
Go slices.CompactFunc 会在压缩连续重复项后清零尾部元素。本文区分尾部引用与整个 backing array 的生命周期,给出直接接收返回值、Clone 脱离旧数组和 Clip 的使用边界。329 收藏 -
Go 1.23 引入的 unique.Make 可以把可比较值规范化为 Handle。本文从最小写法、map 去重、类型约束和生命周期四个方面说明如何正确复用唯一实例。329 收藏 -
CGO_ENABLED=0 会让 cgo 构建约束失效。本文从环境确认、文件筛选到纯 Go 实现配对,说明如何定位“找不到实现”并稳定检查两条构建分支。329 收藏 -
Go pprof HTTP 地址打开为空时,先区分服务、路径和 mux 三层问题。本文从 net/http/pprof 的匿名导入讲起,说明 DefaultServeMux 与自建 ServeMux 的注册差异,并给出目录页、heap 和 CPU profile 的排查顺序。329 收藏 -
Go 的 os.Chown 接收路径、uid 和 gid,用于修改 Unix 文件或目录的数字所有者信息。本文说明 -1 保留参数、符号链接与 Lchown 的差别、权限错误处理和 Windows/Plan 9 平台边界。329 收藏 -
crypto/rand.Text 返回的不是任意字母数字串,而是基于 RFC 4648 Base32 的密码学安全文本。本文从官方实现拆开字符集合、长度与自定义字符表的边界。329 收藏 -
讲清 Go time.Timer 复用时 Stop、Drain 和 Reset 的调用边界,并区分 Go 1.23 新语义与旧版本写法,用最小循环和检查清单避免旧值、阻塞与并发复用问题。328 收藏