Go问答技术文章
-
解释 Go sort.SliceIsSorted 遇到 NaN 时看似判断异常的原因,拆开相邻比较与 IEEE 754 语义,并给出拒绝、过滤或显式排序 NaN 的一致比较器写法。226 收藏 -
Go build 出现疑似缓存未更新时,先确认 GOCACHE 与构建输入,再用 -a、go clean -cache、gocacheverify 和 gocachehash 分层定位,避免误删模块缓存。226 收藏 -
csv.Reader.InputOffset 返回输入流当前读取位置,也就是最近一条记录的末尾与下一条记录的开头,不是字段坐标。本文说明它与 FieldPos、ParseError 的区别,以及如何用记录边界实现可靠的 CSV 进度检查点。225 收藏 -
json.Decoder.More 只回答当前数组或对象里是否还有元素,不能单独判断顶层 JSON 流是否还有数据。本文区分 More、Token、Decode 与 io.EOF 的边界,并给出遍历容器、读取连续顶层值和拒绝尾随数据的写法。225 收藏 -
go build -trimpath 会移除可执行文件中的本机文件系统路径,但不会自动删除调试符号。本文用最小示例拆解它对堆栈、源码导航、CI 可复现构建和生产发布的影响,并给出按场景选择构建参数的方法。224 收藏 -
用 Go 的 hash.Hash 和 io.MultiWriter 把同一份字节分发给多个独立摘要实例,讲清 Sum 参数、结果命名、Reset 复用和摘要长度边界。223 收藏 -
从 Go 指针指向的内存内容与 C 是否跨调用保留地址两个边界,定位 cgo 指针规则 panic,并比较直接传字节、C 内存、cgo.Handle 和 runtime.Pinner 的安全写法。223 收藏 -
本文解释 Go EvalSymlinks 为何要求路径组件真实存在,并给出现有路径、断链与待创建目标的正确处理方式。223 收藏 -
Go Resolver.LookupHost 返回的是本地解析器得到的地址切片,不是稳定的主备顺序。容器中的 resolv.conf、hosts 文件、Go/cgo 解析路径和 IPv4/IPv6 排序条件不同,就可能让结果顺序变化。本文给出对照排查和应用层稳定选择方案。223 收藏 -
Go 模板遇到缺失数据时可继续输出、返回元素零值或立即报错。本文解释 missingkey 三种策略、map 与 struct 的边界,并给出严格渲染、缓冲输出和表驱动测试方案。 223 收藏 -
slog.LevelVar 在单进程内并发安全且会被 Handler 每条记录读取。动态修改只影响部分请求,通常是 Logger/Handler 未共享同一 LevelVar、存在双重过滤,或多实例只更新了一个进程。223 收藏 -
Go 1.21 以后 toolchain 会依据 go.mod、go.work 和 GOTOOLCHAIN 选择版本。本文说明离线环境如何区分自动下载、PATH 预装和版本要求,并给出不触发网络下载的配置与验证清单。223 收藏 -
Golang · Go问答 | 4星期前 | select · time.After · Go问答 · Go time.After 循环 Go timeafter 出错 Go 定时器增长 Go NewTimer Reset Go select 超时
循环中反复调用 time.After 可能让分配和未触发计时器数量持续上升。本文区分 Go 1.23 前后的回收边界,给出可复用 Timer 的 Stop、排空与 Reset 写法,并说明什么时候应换成 Ticker 或 context.WithTimeout。222 收藏 -
Go HTTP 服务收到 SIGTERM 后,用 NotifyContext 接管信号,再以带截止时间的 Server.Shutdown 停止监听并等待活动请求完成。222 收藏 -
unsafe.SliceData 对空切片的结果取决于 nil 和 cap:nil 返回 nil,cap 为 0 的非 nil 空切片返回不确定地址,不能直接解引用;cap 大于 0 时才有首个 backing array 元素可谈。222 收藏