Go语言技术文章
-
解释 net/http ServeMux 中 /docs、/docs/ 和 /docs/{$} 的匹配边界,说明自动补尾斜杠的原因,并给出精确路径与子树路径的注册选择。177 收藏 -
regexp.FindAllStringIndex 返回的是原始 Go 字符串的字节偏移而不是 Rune 下标。本文用中文文本说明如何直接切片匹配结果、按需换算字符位置,并处理空匹配、原文变化和自动化流水线中的边界门禁。177 收藏 -
Go 依赖升级后出现接口不兼容,先不要盲目回退。本文用 go.mod、go list -m、go mod graph 和编译错误把问题分成导入路径变化、公开 API 断裂与间接依赖切换三类,再给出回退、迁移和兼容适配的选择方法。176 收藏 -
Go io.ReadAll 配合 LimitReader 时,应读取上限加一字节识别超限。本文说明 EOF 语义、受限读取封装、错误优先级及资源关闭责任。176 收藏 -
Go 字符串切片可能继续关联原始大字符串,导致只保留一小段文本时仍占住更大的底层存储。本文说明 strings.Clone 的适用边界、生命周期放置位置、空字符串行为和复制成本,帮助你只在有内存保留证据时做独立复制。176 收藏 -
Go 1.27 默认启用小对象专用分配器,针对部分小于 80 字节的分配降低调用成本。本文拆开 GOEXPERIMENT=nosizespecializedmalloc 的构建期语义、runtime 条件和 A/B 对照用法,避免把它误当成运行时开关。176 收藏 -
Go unique.Handle[T].Value() 会返回创建句柄的 T 值浅拷贝。本文从 Go 1.23 引入的 unique 包出发,说明如何取回已驻留值、比较等值句柄,以及迁移时需要注意的可比较约束和生命周期边界。176 收藏 -
Cmd.Environ 返回命令按当前配置运行时使用的环境副本。本文用一个小型命令行示例说明 Dir、Env、PWD、重复键和执行结果之间的关系。176 收藏 -
Go gzip.Reader 默认会把拼接的多个 gzip 成员连续解压。本文说明 Multistream(true) 的默认语义,以及怎样用 Multistream(false)、io.ByteReader 和 Reset 按成员读取。176 收藏 -
Go time.Time 默认通过 MarshalJSON 输出带引号的 RFC 3339 时间字符串,并保留有意义的子秒精度。本文说明纳秒尾随零、时区偏移、Location 名称、单调时钟、零值和错误边界,帮助接口设计避免误判精度丢失。176 收藏 -
Golang · Go教程 | 1星期前 | 并发 · errgroup · goroutine · 错误处理 · go · Go 并发控制 SetLimit x/sync/errgroup TryGo
Go x/sync/errgroup.TryGo 会在并发额度未满时启动任务,额度已满时立即返回 false。本文用 SetLimit、TryGo 和 Wait 说明非阻塞提交、拒绝分支、错误回收与 Context 取消的边界。176 收藏 -
通过给表驱动用例增加语义化 Name 字段,让 Go testing.T.Run 的输出、-run 筛选和失败定位保持稳定。176 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · Go教程 · net/http · Go net/http http/2 ResponseController Hijack ErrNotSupported HTTP/1.x
Go ResponseController.Hijack 需要按调用结果判断当前 ResponseWriter 是否支持连接接管。本文区分 HTTP/1.x、HTTP/2 与包装器能力,说明 ErrNotSupported 的降级处理,以及接管后 net.Conn、缓冲读写器和 Request.Body 的责任边界。176 收藏 -
runtime.KeepAlive 只保证对象在指定位置前仍然可达,不负责关闭文件描述符、连接或其他外部资源。本文从终结器提前运行的风险出发,说明 KeepAlive 的正确位置、显式 Close 的责任和资源持续占用的排查方法。176 收藏 -
io.Pipe 是没有内部缓冲的同步内存管道,写端必须等读端消费数据。本文说明怎样安排并发读写、处理 EOF 与 ErrClosedPipe,并用 CloseWithError 把首个业务错误传到另一端。176 收藏