Go语言技术文章
-
用 Go 的 filepath.WalkDir 遍历文件树时,如何跳过 .cache、.git 等隐藏目录但继续访问其他路径?本文给出处理 error、判断 DirEntry 和使用 fs.SkipDir 的最小写法,并说明 SkipAll、符号链接与根目录错误的边界。479 收藏 -
sql.Named 能保留参数的业务名称,但不会替不同驱动改写 SQL 占位符。本文用 database/sql、MySQL、PostgreSQL 和 pgx 的边界说明命名参数如何落地,避免把参数语义和占位符语法混为一谈。479 收藏 -
slices.Clone 会复制元素并保留输入切片的 nil 语义;copy 只搬运元素,目标切片是否为 nil、长度够不够,都由调用方先决定。本文用对照代码说明两者的边界。479 收藏 -
Go test -race 通过并不等于业务状态一定一致。本文从执行覆盖、同步关系和多字段不变量三层排查数据异常,并给出可复查的修复清单。479 收藏 -
Go math/bits.Mul 返回 hi 和 lo 后,如何判断乘积是否超出低半部,以及怎样用 Mul64、math/big 重建并核对完整结果。479 收藏 -
Go 扫描上传目录或日志目录时,os.ReadDir、File.Readdir 和 filepath.WalkDir 的内存与排序行为并不一样。本文用一个目录索引小实验说明如何按需读取 DirEntry、避免无意排序,并在权限错误和部分结果场景下保留可用数据。478 收藏 -
Go range 遍历结构体切片时,迭代变量拿到的是元素值副本;本文对比索引、指针切片和 map 的写法,说明怎样让字段修改真正写回原数据。478 收藏 -
Go 中值类型不能赋给接口,常见原因是接口要求的方法由指针接收者声明,因而只进入 *T 的方法集。本文用最小示例区分方法调用的自动取地址与接口赋值规则,并给出值接收者、指针接收者和编译期断言的判断方法。478 收藏 -
go work sync 会把工作区的构建列表同步回 use 指定的各个模块,因此 go.mod 可能新增间接依赖或升级版本。本文给出确认工作区、区分单模块依赖、整理 go.mod 的实用步骤。478 收藏 -
slices.Clip 会把 Go 切片的 cap 收紧到 len,避免后续 append 复用多余容量;但它不复制底层数组,真正要释放长期持有的大数组仍需建立独立副本。478 收藏 -
testing.T.Cleanup 会在当前测试及其子测试完成后执行,多个回调按后注册先执行。本文用 t.Run、t.Name 和事件记录说明父子测试清理归属、注册顺序、并行子测试边界及常见误区。478 收藏 -
Golang · Go问答 | 2个月前 | go · Context · 并发编程 · 接口超时 · 超时控制 goroutine泄漏 WithTimeout Go context Go问答 CancelFunc
从接口超时、下游取消和 goroutine 泄漏治理角度,解释 Go context 的使用价值、风险边界、采用路径和观察指标。477 收藏 -
在 Go 的 text/template 模板里,条件语句(比如 {{if}})两侧通常会把原本的换行符一并保留下来,所以渲染结果里很容易莫名多出几行空白;想把这类空白控制住,就得用 {{-(左去空白)和 -}}(右去空白)这套语法,按位置精确裁掉多余字符,让最终输出更紧凑,也不会夹带冗余换行。 在477 收藏 -
解释 Go net.IP.Equal 如何处理 4 字节 IPv4 与 IPv4-mapped IPv6,结合 To4 和 16 字节表示说明比较、规范化与边界判断。477 收藏 -
用 Go 的 encoding/hex 把二进制 ID 转成稳定的小写十六进制文本,并说明 DecodeString 的输入边界、错误处理和预分配写法。477 收藏