Go语言技术文章
-
Go 中直接比较 error 只检查当前错误值,errors.Is 会沿 Unwrap 错误链寻找匹配。本文用 %w、errors.Join 和自定义 Is 说明三种判断边界。401 收藏 -
Go 的 encoding/csv 会自动忽略完全空行,但不会把只含空格的行当作空行。本文说明 Comment、TrimLeadingSpace 与 FieldsPerRecord 的取舍,并给出带错误处理的读取示例。401 收藏 -
Go WebSocket 握手前应使用 websocket.Upgrader.CheckOrigin 精确校验 Origin。本文说明 Origin 与 Host 的边界、白名单写法、常见放行反例,以及来源校验与身份鉴权的区别。401 收藏 -
context.AfterFunc 的 stop 函数只负责解除回调关联,并不等待回调结束。本文用取消清理场景说明 true、false 的含义,以及如何等待已启动回调完成。401 收藏 -
Go Rows 关闭后 Next 返回 false,而 Err 不一定因主动关闭变成非 nil。用假设排障场景解释返回 Rows 前 defer Close 的所有权错误,并给出消费与关闭责任统一的函数写法。401 收藏 -
Go SQL事务可采用显式提交、延迟回滚兜底结构。本文以库存预留代码说明中间错误返回、ErrTxDone、清理异常与提交失败的处理,并解释事务上下文和盲目重试的风险。401 收藏 -
Go 精简容器中 time.LoadLocation 失败,通常是镜像缺少 IANA 时区数据库。本文按查找顺序说明安装 tzdata 与导入 time/tzdata 两种修复方案,并给出容器上线复查清单。401 收藏 -
用 Go 标准库 container/list 和 map 实现一个可运行的 LRU 缓存,说明访问命中、队首移动、更新和队尾淘汰之间的关系,并补充容量与并发边界。401 收藏 -
解释Timer.Stop后仍看到事件的原因,区分新旧通道语义、已接收数据与AfterFunc回调,并通过单一拥有者和退出确认示例说明取消协议及旧排空写法限制。401 收藏 -
Go 读取 ShiftJIS 日文 CSV,可先用 x/text 解码为 UTF-8,再交给 csv.Reader 逐条解析。本文给出文件导入函数,说明列数、替换字符和错误处理边界。401 收藏 -
Go roaring 可以用 WriteTo 和 ReadFrom 在 io.Writer/io.Reader 之间传输 Roaring 位图,也可以用 MarshalBinary 和 UnmarshalBinary 处理完整字节切片。本文说明两种入口、错误处理、容量估算与 32/64 位兼容边界。401 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · Go问答 · 版本升级 · Go Base strconv.ParseInt Go升级 bitSize NumError ErrRange ErrSyntax ParseInt行为
Go 升级后 strconv.ParseInt 结果看似变化,通常应先比较输入字符串、base、bitSize 和 error 处理。本文用一套可复现的排查入口拆开前缀推断、位宽范围与 NumError,帮助判断差异来自调用契约还是升级本身。401 收藏 -
io.LimitReader 达到上限后也会返回 EOF,这个 EOF 不能单独证明源数据自然结束。本文用 max+1 探测窗口区分恰好达到上限、超限截断和底层读取错误,并给出可复用的 Go 实现与测试边界。401 收藏 -
Go 的 archive/tar.Reader.Next 会自动丢弃当前条目剩余数据并处理块填充,再返回下一个 Header。本文区分 Header、Read、Next 和两个位置的 io.EOF,并补充只读前缀与 ErrInsecurePath 的安全边界。401 收藏 -
用户输入被拼进 Go 正则表达式时,regexp.QuoteMeta 可以把元字符变成字面量。本文用搜索过滤场景拆开转义、拼接、匹配和空输入边界。400 收藏