Go语言技术文章
-
Go regexp 通过命名捕获组提取日志字段,配合 SubexpIndex 集中处理索引、匹配失败、可选字段和重复命名,让日志格式调整不再牵动大量 match 数字位置。354 收藏 -
从 DB.Stats 指标、Rows 生命周期和提前退出分支入手,定位 Go database/sql 连接耗尽,并给出可复用的关闭与防复发写法。354 收藏 -
runtime.GoroutineProfile 的记录数会随 goroutine 创建和退出而变化。本文比较一次分配、带余量的有界重试和 runtime/pprof,给出容量上限、重试上限、records[:n] 截断与失败处理写法。354 收藏 -
Go 接口字段既可能缺失,也可能显式传 null。本文说明普通值和单层指针为何不足,并给出 Optional[T] 三态模型、PATCH 更新规则、响应编码方式、失败处理及测试清单。354 收藏 -
Go slog 日志量过大时,先用 LevelVar 和 HandlerOptions.Level 过滤低价值日志,再对可聚合的成功事件做带键采样;错误、审计和关键状态变化保持全量保留。354 收藏 -
archsimd 目标实现是否被选中取决于 GOEXPERIMENT=simd、目标 GOARCH、文件名隐式约束和显式 //go:build 的共同结果,运行时 CPU 特性检查不会改变已编译文件。354 收藏 -
Go flight recorder 的缓冲区太小时不会按事件类型选择性丢弃,而会淘汰较老的完整 trace generation。本文解释 MaxBytes 与 MinAge 的优先级、会缺失的上下文及容量配置方法。354 收藏 -
讲清 Go atomic.Uint64 的 Add 与 Load 如何完成并发计数和单值统计快照,并说明多字段状态不能靠连续 Load 自动保持一致。353 收藏 -
围绕Go net/url处理带未编码分号的查询串,说明ParseQuery如何保留有效参数和错误信息,为什么URL.Query会静默丢错,以及旧协议兼容分号时的安全拆分边界。353 收藏 -
Go map 的 range 顺序不保证稳定。本文用排序后的键值表示和顺序无关断言,说明如何写出可重复、能覆盖边界的 map 测试。352 收藏 -
http.Client.Timeout 限制的是一次请求从连接到读取响应体的总时长,不会替调用方管理 Response.Body。本文区分 Close、读到 EOF、连接复用和慢流场景,给出可直接套用的清理写法。352 收藏 -
Go gob.RegisterName 可以为接口值中的具体类型指定稳定线上名称。本文用生产者与消费者小项目演示共享名称常量、本地类型注册、接口编码、重复注册 panic 以及结构体字段兼容升级边界。352 收藏 -
strings.Builder 首次写入后会记录自身地址;按值复制会让副本携带旧地址,后续 Write 或 Grow 被 copyCheck 判定为非法复制并 panic。修复应改用单一所有者、指针传参或返回字符串。352 收藏 -
Golang · Go问答 | 4星期前 | 错误处理 · net/http · HTTP客户端 · Go问答 · Go clienttimeout http.Client Timeout Go 请求超时 Go url.Error 超时 Go HTTP 客户端时限
Go 的 clienttimeout 通常对应 http.Client.Timeout。本文说明它覆盖的请求范围、如何从 client.Do 返回值中判断超时,以及它与 context 和 Transport 分段时限的区别。351 收藏 -
解释 Go crypto/rand.Read 的完整填充保证,并用 io.ReadFull 处理自定义 Reader 或通用 io.Reader 的短读,避免把不足字节的数据误当成完整令牌。351 收藏