Go问答技术文章
-
context.WithoutCancel 会保留父 Context 的 Value,但故意切断 Done、Err、Deadline 和 Cause。本文用 Go 1.21+ 的最小示例说明适用场景、迁移边界与验收方法。344 收藏 -
sync.Map.Range 适合遍历某个时刻可见的键值,但不能把回调结果当成并发集合的稳定快照。本文拆开 Store、Delete 与 Range 同时发生时的可见性边界,并给出需要一致结果时的替代方案。344 收藏 -
Go database/sql/driver.Validator 的 IsValid 只返回布尔值,不会直接返回 ErrBadConn。本文结合连接归还池的时机,说明 false 如何让失效连接被丢弃,以及 ErrBadConn 何时才适合交给 database/sql 触发新连接重试。344 收藏 -
Go HTTP 超时不能只看一条错误字符串:context deadline、http.Client.Timeout 和 Transport 阶段超时的触发范围不同。本文按请求边界、错误链和连接阶段给出区分方法。344 收藏 -
Go HTTP 服务调用 Shutdown 后仍可能丢请求,关键不在一个函数是否返回,而在新连接、活跃连接、Keep-Alive 连接和超时窗口是否被分别处理。本文用一个可复现的停机流程拆开这些边界。343 收藏 -
围绕 Go testing.T Cleanup 讲清后注册先执行的规则,示范如何按资源依赖登记清理函数、隔离子测试资源并处理清理错误。343 收藏 -
Golang · Go问答 | 1个月前 | Go问答 · Go fmt.Fscan剩余换行 Go读取换行分隔输入 fmt.Fscan与ReadString Go空行处理 bufio.Reader整行读取
解释 Go fmt.Fscan 将换行视为空白分隔符时的边界行为,给出切换到 ReadString、Fscanln 和整行解析的实用方案。343 收藏 -
给Expr的Compile传入结构体环境,可以提前发现未知变量和字段。本文用正反规则示例区分固定结构体字段与嵌套map动态键,并说明AllowUndefinedVariables、零值及错误处理的边界。343 收藏 -
Go map 执行 clear 后 len 会变成 0,但底层桶、GC 时机和运行时堆复用会让进程内存暂时不降。本文用小实验区分清空、重建和真正释放。343 收藏 -
Go test -failfast 会在首个测试失败后停止启动新的测试,但不会把已经开始的并行测试瞬间杀掉。本文按串行、并行、清理和 CI 门禁的边界,说明如何用它快速定位失败。343 收藏 -
Go url.JoinPath 接收已转义路径元素,保留百分号编码并不异常。通过 Path、RawPath、EscapedPath 的区别和原始名称构造示例,说明斜杠、点段与重复转义的处理方法。343 收藏 -
解释 Go Ants 池内任务再次提交时的满池阻塞原因,给出非阻塞、有限等待和拆分池的处理方案。343 收藏 -
用 Go 的 io.SectionReader 读取文件片段时,EOF 到底代表成功还是数据不足?本文从偏移量、剩余长度和 ReadAt 行为入手,给出一段可复查的判断代码。342 收藏 -
Go 1.22 起 ServeMux 支持方法和通配符,重叠路由按更具体的模式优先;只有双方都不更具体时才冲突并在注册时触发 panic。本文用真实模式拆解方法、路径、主机和注册顺序的边界。342 收藏 -
Go 的 csv.Reader 把 FieldsPerRecord 设为负数后,不再检查每条记录的字段数量,适合列数可变的 CSV;本文同时说明它与正数、0 的区别,以及如何在业务层安全处理变长记录。342 收藏