Go语言技术文章
-
Go 流式响应发送 Trailer 时,已知字段名必须在首次 WriteHeader、Write 或 Flush 前通过 Trailer 响应头声明;正文写完后再设置最终值。本文用一个 NDJSON 小项目讲清服务端顺序、客户端 EOF 读取、TrailerPrefix 边界和自动化验收。215 收藏 -
Go 的 database/sql 中,事务回滚并不等于所有相关资源都已正确收口。本文从 Tx、Rows、Stmt 和连接池指标四个层面定位连接仍被占用的常见原因。215 收藏 -
maps.Clone 会新建顶层 map,但只对键和值做普通赋值;当值是 slice、嵌套 map、指针或包含引用的结构体时,内部状态仍可能共享。本文用对照代码说明影响范围,并给出逐层复制的写法。214 收藏 -
代码生成器不要手工维护缩进和导入顺序:先输出完整且合法的 Go 文件,再用固定版本 gofmt 统一空白,用 gofmt -d 检查生成结果是否稳定。214 收藏 -
Go slices.BinarySearchFunc 遇到重复比较键时返回等价区间最左索引;本文说明 found、插入点、比较器和继续扫描全部重复项的边界。214 收藏 -
Go tls.Config可以并发复用,但传给TLS函数后不得继续修改。本文说明只读快照、Clone浅复制、可变切片隔离和证书配置热切换的安全组织方式。214 收藏 -
Go flag.Func 可以把字符串解析、业务校验和错误返回集中在回调中。本文用环境参数示例说明先校验后赋值、FlagSet 错误策略、重复参数行为和表驱动测试。214 收藏 -
os.DirFS 接收的是 io/fs 逻辑路径,不是任意操作系统路径,因此会拒绝 ..、绝对路径和空路径段。但这只阻止调用参数直接上跳,不能防住目录内符号链接逃逸,也不能消除相对根目录受 Chdir 影响的问题。本文说明校验方法与 os.Root.FS 的适用边界。214 收藏 -
errors.As 不只匹配具体错误类型,也能匹配错误链中实现某个接口的错误。声明接口变量并把其地址传入 errors.As,即可按能力处理不同实现,同时保留多层包装上下文。213 收藏 -
Go 验证 HMAC 时应先用同一密钥和同一原始消息重算标签,再把对方标签解码为字节,最后交给 hmac.Equal 做恒定时间比较。本文给出函数与 Webhook 示例。213 收藏 -
Golang · Go问答 | 3天前 | goroutine · pprof · Go问答 · goroutineleak Go pprof goroutine 泄漏剖析 waiting 状态 goroutine profile
waiting 数量多本身不能证明泄漏。本文区分普通 goroutine profile 与 Go 1.27 goroutineleak profile,并用趋势、可达性和资源影响建立可执行的判断方法。213 收藏 -
Go Scanner 默认只能缓冲有限大小的 token,遇到超长日志会返回 token too long。本文说明如何在 Scan 前正确设置 Scanner.Buffer,以及何时改用 bufio.Reader 分片读取。212 收藏 -
Go interface 存入零值结构体后为什么仍不等于 nil?关键在接口值同时携带动态类型和动态值。本文对比零值结构体、nil 指针和 nil interface,给出类型断言与反射判断的安全边界。212 收藏 -
解释 Go fs.Glob 在 ReadDir 回退和 GlobFS 委托路径中如何处理 I/O 错误,并给出使用 WalkDir 保留底层错误、避免把读取失败误判为无匹配的完整写法。212 收藏 -
Golang · Go教程 | 4天前 | JSON · 时间处理 · Go教程 · database/sql · 后端开发 · RFC3339 Go时间序列化 time.Duration JSON 数据库时间戳 sql.NullTime
用一个小型任务接口统一 Go 业务时间、Duration 与数据库可空时间戳,给出自定义 JSON 类型、仓储映射和往返测试。212 收藏