Go语言技术文章
-
Go 结构体切片不能直接依赖 slices.Index 做字段条件查询,slices.IndexFunc 更适合表达按 ID、状态或组合条件查找第一条记录。本文用完整示例说明回调、-1 边界、重复匹配和 map 选型。136 收藏 -
Go 切片的 append 是否改写原数据取决于容量和底层数组共享关系。本文结合 slices.Clone 说明如何建立独立写入副本,以及浅复制、nil 和空切片的边界。136 收藏 -
Go database/sql 读取多个结果集时,要在当前结果集内用 Next 和 Scan,读完后用 NextResultSet 切换,并在两个 false 边界检查 Rows.Err。本文给出不依赖具体存储过程语法的通用读取骨架。136 收藏 -
用 Go archive/tar 解包外部归档时,先用 filepath.IsLocal 拒绝绝对路径和 .. 越界路径,再限制条目类型并安全写入目标目录。136 收藏 -
Go 表驱动测试调用 t.Parallel 后,闭包捕获的用例值和共享切片、map 可能互相污染。本文说明如何复制当前用例、隔离可变夹具,并用 go vet 与 -race 找到剩余风险。135 收藏 -
Go 切片性能优化的关键不是盲目把容量设得很大,而是根据可估算的数据量使用 make 预留容量;本文结合追加、未知数量和基准测试说明 len、cap 与 append 的配合。135 收藏 -
Go 的 os.ProcessState.SysUsage 返回平台相关的资源使用对象,不同系统的底层类型和字段语义并不完全相同。本文从 ProcessState 的生命周期、类型观察、平台适配和生产日志四个方面说明如何安全使用。135 收藏 -
Go 1.27 工具链中的 waitgroupgo 更适合做 WaitGroup 代码现代化迁移。本文区分 go vet 检查与 go fix 差异预览,说明 Add、goroutine、Done 组合的修复顺序,以及闭包、错误处理、递归启动和旧工具链兼容边界。135 收藏 -
sync.Map.CompareAndDelete 可以在 key 的当前值仍等于旧值时删除映射项,适合处理并发缓存和临时索引清理。本文说明 bool 返回值、不可比较旧值、缺失键和与普通 Delete 的边界。135 收藏 -
Go x/net/http2/hpack.Decoder 的输入是压缩后的 HPACK 头部块,解压后的名称和值可能更长。本文说明 SetMaxStringLength 的限制对象、ErrStringLength 的处理方式,以及增量 Write 与 Close 的生命周期边界。135 收藏 -
在 Go LDAP 查询中使用 EscapeFilter 转义用户输入,固定属性名与过滤器模板,并区分过滤器值、DN 和查询结果处理边界。135 收藏 -
go-message 写邮件时,附件 WriteCloser 与外层 Writer.Close 不是同一层职责。本文从 multipart/mixed、传输编码和 MIME 终止边界解释关闭顺序,并给出可处理写入与收尾错误的 Go 示例。135 收藏 -
解释Go snowflake修改Epoch后旧编号时间偏移的原因,区分Node生成状态与全局解码配置,并给出显式历史格式解码器和保留纪元、分版本迁移的方案。135 收藏 -
Go 的 encoding/csv 会按引号状态判断记录边界。本文用多行字段示例说明怎样保留引号内换行,并给出字段数检查、脏数据容错和大文件逐条读取的取舍。135 收藏 -
Go bufio.Scanner 默认按行切分,但日志块、消息片段或自定义文本记录往往需要自己的分隔符。本文从 SplitFunc 的返回值契约出发,给出处理半条记录、EOF、空记录、超长 token 和扫描错误的完整写法。135 收藏