Go问答技术文章
-
从标签表达式、文件名后缀和 GOOS/GOARCH 三层筛选解释 Go 文件为何被排除,并用 go list 定位实际构建集合。277 收藏 -
Go 的 os.ReadDir 会一次性返回目录条目,大目录容易让内存峰值随规模增长。本文用 File.ReadDir 分批处理、按需读取元数据和排序边界说明一套可回滚的排障方案。277 收藏 -
Go x/text/cases 的 Caser 可能带状态,不能因为它是值类型就直接在 goroutine 间共享。本文说明 Lower、Upper、Title、Fold 的并发边界,以及 String、Bytes、Transform 的选择。277 收藏 -
Go 的 hash/crc32.ChecksumIEEE 会按 IEEE 多项式对传入的字节序列计算 32 位循环冗余校验。本文说明校验范围、分段读取、结果比较和算法兼容边界,帮助你避免把字段遗漏、结果格式或 CRC32 的用途理解错。277 收藏 -
对比Sonyflake整数、8字节编码与UUID的16字节及标准文本表示,给出Go往返转换函数,并说明数据库驱动、JSON数值精度和不同标识类型的接入边界。277 收藏 -
filepath.Clean 只做词法规范化,不会把用户路径限制在某个目录,也不会处理符号链接越界和检查使用之间的竞态。本文对比 Clean、IsLocal、Rel 与 Go 1.24 的 os.Root,并给出文件服务的选择清单。277 收藏 -
讲清 Go http.DetectContentType 的前512字节取样边界、短文件处理、application/octet-stream 回退,以及上传文件取样后如何复位游标。277 收藏 -
解释 Go defer 在循环中的函数边界,给出局部函数及时关闭文件的写法,并整理打开、读取、关闭和并发上限的排障清单。276 收藏 -
Go jsontext Decoder 的 SkipValue 适合在流式读取 JSON 时跳过不需要处理的大对象、数组或标量,避免 ReadValue 为整个值保留内存。本文从字段分支、嵌套边界和错误处理说明如何使用。276 收藏 -
Go 1.25 起可以用 os.Root.Chtimes 在受限目录树内更新文件的访问时间和修改时间。本文说明两个时间参数、零值保留、精度、权限与平台边界。276 收藏 -
Go archive/zip 找不到中文文件名,通常不是文件内容问题,而是 ZIP 目录项的名称编码标记、实际名称或斜杠路径不一致。本文说明如何判断 NonUTF8、正确创建 UTF-8 文件名,以及外部编码压缩包的处理边界。276 收藏 -
Windows1252 与 ISO8859_1 都是单字节编码,但 0x80–0x9F 区域的字符定义不同。本文用 Go x/text/encoding/charmap 对比解码、流式转换和反向编码,说明为什么不能只看字节宽度来选择编码。276 收藏 -
Go 模块解析遇到某个已知不能加载的版本时,可以在主模块 go.mod 中用 exclude 精确排除 module@version,再观察解析器是否选择更高可用版本。本文同时说明它与 replace 的边界,以及为什么不会改写下游模块。275 收藏 -
Go 中给 net.Resolver 设置 Dial 后仍访问默认 DNS,通常不是地址写错,而是当前平台没有选择 Go 内置解析器。本文解释 Resolver.Dial 与 PreferGo 的组合边界,并给出接入 HTTP Transport、处理平台差异和保留回退路径的写法。275 收藏 -
Go 时区缩写解析成功不代表偏移正确。本文解释 Parse 的本地时区依赖与未知缩写回退,给出显式地区解析旧输入、RFC3339 数字偏移交换新数据的写法及边界。275 收藏