Go问答技术文章
-
Go 1.27 对 go.mod 的多组 require 块做了结构整理。本文从合并冲突和手工编辑后的现场出发,解释何时会重排、注释如何归属,以及升级后怎样做最小复查。298 收藏 -
Golang · Go问答 | 4天前 | 字符串 · 内存 · go · 性能 · strings.Builder · 字符串拼接 reset() String() 内存复用 go strings.Builder WriteString
strings.Builder 适合顺序拼接字符串,但 String() 返回值与 Builder 的后续写入、Reset() 复用之间有明确边界。本文用可运行实验说明结果何时可以长期保存,以及为什么不能复制 Builder。297 收藏 -
Golang · Go问答 | 4天前 | 流式处理 · 工程实践 · net/http · Go问答 · HTTP服务器 · Go HTTP服务器 请求体 流式请求 EnableFullDuplex http.ResponseController
http.ResponseController.EnableFullDuplex 解决的是 HTTP 服务端同时读取请求体和写出响应的边界问题。本文用一个边读边回传的 Go Handler 拆开它的默认行为、启用时机、协议限制和测试检查点,说明什么时候该用,什么时候不该把它当成通用加速开关。296 收藏 -
Go 的 map 可以在 range 遍历中删除当前键,但删除未到达的键会改变本轮可见结果,新增键则可能出现也可能被跳过。本文用可运行示例拆开这三个边界,并说明并发场景为什么仍然不安全。295 收藏 -
signal.NotifyContext 让操作在收到系统信号时通过 ctx.Done 退出,但取消上下文与停止信号订阅是两件事。理解 stop 的资源释放和默认信号行为,才能写出可重复启动、可测试的优雅退出代码。295 收藏 -
slices.Delete 会原地移动元素并返回新切片。排查对象迟迟不释放时,要同时看 Go 版本、尾部引用是否清零、返回值是否接住,以及底层数组容量是否仍被长期持有。293 收藏 -
Go 的 time.Timer 不是改一个时间数字那么简单:Reset 前要先处理已经到达的旧事件,重置后还要保证只有一条超时路径能结束本次等待。本文用可复现的请求超时流程说明 Reset、Stop、通道读取和 context 的边界。291 收藏 -
Go regexp.FindStringSubmatch 返回 nil 只表示整体没有匹配;匹配成功但捕获组为空时,切片仍然存在。本文用最小示例区分 nil、空字符串和可选分组,并给出稳定判断写法。290 收藏 -
Golang · Go问答 | 3星期前 | HTTP · IO · 流式处理 · Go问答 · 性能边界 · TeeReader · io.TeeReader io.Reader 请求体 日志审计 Go问答 流式复制
Go 的 io.TeeReader 会把每次读取到的字节同步写入另一个 Writer,适合做摘要、哈希和审计,但不等于后台复制。本文用请求体落盘场景拆开同步写入、写入错误传播、部分读取和失败清理边界,给出可验证的安全用法。289 收藏 -
Go 里 context.WithTimeout 设置的超时可能比预期更早,因为子 Context 的截止时间不会晚于父 Context。本文用父子 deadline、ctx.Done 和 cancel 说明如何定位提前结束,并给出可复查的调用边界。289 收藏 -
time.Duration 本质是纳秒数,直接转成整数时会按目标单位截断小数。本文从接口参数和调用方预期出发,拆解单位常量、整数除法、浮点换算与超时配置的边界,给出可核对的写法。288 收藏 -
Go 1.23 引入的 slices.Sorted 会收集迭代器值并返回新的有序切片。本文用同一段可运行代码核对排序结果、原切片是否被修改以及空输入行为。288 收藏 -
Go 用 strconv.AppendInt 把整数追加到 []byte 时,关键不是记住一个性能结论,而是看清切片长度、容量和底层数组何时变化。本文用可运行代码说明复用缓冲区的边界,并处理别名切片带来的覆盖问题。287 收藏 -
Golang · Go问答 | 4天前 | 超时 · go · 外部命令 · 进程管理 · CommandContext · wait 子进程 进程超时 Go外部命令 CommandContext 命令启动
CommandContext 超时并不等于所有子进程都已退出。本文用可运行示例拆解 Start、Process、Wait 与子进程继承关系,给出可核对的超时收尾写法。287 收藏 -
text/template 默认会把缺失 map 键静默变成空值。本文用 missingkey=error 配合模板执行,定位字段拼写错误发生的阶段,并给出可运行的测试验收方法。286 收藏