Go语言技术文章
-
Go 1.27 允许结构体复合字面量直接使用提升字段名。本文用可迁移的 Go 示例说明新旧写法、字段选择规则,以及指针嵌入和字段重叠等编译边界。186 收藏 -
Go 的 embed.FS 会保留嵌入目录的路径层级。本文用 io/fs.Sub 裁剪资源根目录,再通过 http.FS 和 http.FileServer 提供静态文件服务,并说明 URL 前缀、错误处理与发布边界。186 收藏 -
Go 的 for range channel 一直等待不退,通常与未关闭、nil channel、发送端阻塞或关闭责任混乱有关。本文用最小示例说明排查和修复方法。185 收藏 -
围绕 Go http.Transport 说明 IdleConnTimeout、MaxIdleConns 和 MaxIdleConnsPerHost 的作用,区分客户端空闲回收与服务端主动关闭,并给出可复用 Transport 的配置示例和排查清单。185 收藏 -
解释 Go bytes.Reader 中 Len、Size、Read、ReadAt、ReadRune、Seek 和 Reset 的关系,帮助定位读取后长度变化与游标位置不一致的问题。184 收藏 -
围绕 Go modules replace、vendor 与 module 模式,说明如何确认依赖来源、生成 vendor/modules.txt、统一构建参数并保留可回退的迁移清单。184 收藏 -
Go exec.CommandContext 默认只取消 Cmd 对应的父进程。本文用 Unix 进程组、负 PGID 信号和有限宽限期,说明如何清理子进程树,以及 Cancel、WaitDelay、Wait 的职责边界。184 收藏 -
解释 Go maps.Equal 比较配置 Map 时 nil map 与空 map 为什么相等,说明 m == nil、len、可写边界、NaN 特殊值和需要保留 nil 语义时的测试写法。183 收藏 -
Go 模糊测试里的种子会执行,但不一定产生新的覆盖边或被计为 new interesting。本文从种子语料、输入规范化、守卫条件和覆盖反馈入手,说明如何设计真正命中目标分支的最小种子。183 收藏 -
解释 Go Fuzz 失败输入为什么通常应保留到 testdata/fuzz,并区分真实实现缺陷、错误断言、非确定性、敏感数据和重复语料的不同处理方式。183 收藏 -
cmp.Or 会把类型零值视为‘没有候选’,适合简单回退,却无法仅凭值区分未提供和显式传入的 0、false 或空字符串。本文用配置示例说明原因,并给出指针存在性方案。182 收藏 -
通过 SemVer 示例讲清 Go fmt.Scanner 的触发方式、Token 读取、动词门禁、错误处理和安全赋值。182 收藏 -
http.Request.Clone 会深复制 URL、Header 等可复制字段,但 Body 仍是共享的 io.ReadCloser。本文按出站可重放、入站有界和大流式请求给出安全选择。182 收藏 -
用一个窄而清晰的 Go 类型约束统一 int、int64 和 float64 求和,并通过近似类型项支持业务命名类型。文章给出 Sum、SumBy、表驱动测试,以及空切片、溢出和浮点精度的边界说明。182 收藏 -
ResponseController.Hijack 在 HTTP/2 下返回 ErrNotSupported,根因是 HTTP/2 ResponseWriter 不提供 Hijacker 能力。本文说明 Unwrap 查找链、协议差异、错误判断与降级方案。182 收藏