Go问答技术文章
-
multipart.ReadForm 会把超出内存预算的文件部分落到临时目录,Form.RemoveAll 用于删除这些临时文件。本文区分 net/http Server 自动清理与独立解析时必须手动清理的边界。216 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · 错误处理 · Go问答 · Go MIME Content-Type charset boundary mime.ParseMediaType 参数键
Go mime.ParseMediaType 会把媒体类型和参数键规范化为小写,但参数值保留原大小写。本文说明 charset、boundary 的读取方式、错误边界,以及 FormatMediaType 的往返注意点。188 收藏 -
Go 的 math.Round 明确定义为就近取整,恰好半数时远离零,因此 2.5 得 3、-2.5 得 -3。本文用边界测试对比 RoundToEven,并说明小数位与金额场景的选择。422 收藏 -
big.Int.SetBytes 的契约是把输入解释为无符号大端整数,因此不会读取符号位。需要负数时,应由协议明确符号字段,或按固定字节宽度自行解析二进制补码。349 收藏 -
maps.Clone 会创建新的 map 容器,但键和值只按普通赋值复制;值中若含切片、指针或 map,副本仍可能共享底层数据。本文用配置快照案例讲清判断方法、定制复制与测试门禁。131 收藏 -
Go slog.Group 只传组名却看不到字段时,通常是空组被 Handler 忽略。本文区分空组、空 key 组和非空组,并说明 TextHandler、JSONHandler 与自定义 Handler 的处理边界。250 收藏 -
fs.Sub 只把 io/fs 的逻辑名称映射到子目录,不参与操作系统对符号链接的真实解析,因此不能把 os.DirFS 变成安全沙箱。本文用最小示例解释越界原因,并给出 Go 1.24+ 的 os.Root 做法。248 收藏 -
解释 Go io.SectionReader.Size 为什么固定返回 section 长度,并区分它与 Read、Seek 改变的当前偏移,给出顺序读取、随机读取和边界判断的实用写法。176 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · 错误处理 · IO · Go问答 · 版本迁移 · Go io.Reader io.EOF io.ReadAll ErrUnexpectedEOF ioutil.ReadAll
io.ReadAll 的任务就是一直读取到 EOF,因此 EOF 表示任务正常完成,成功时返回已读字节和 nil;只有非 EOF 错误才会作为错误返回,且错误发生前已读取的数据仍会保留。318 收藏 -
Go io.CopyBuffer 的第二个缓冲区参数传入非 nil 但长度为 0 的切片时,会在复制开始前直接 panic。本文区分 nil、零长度和可用容量三种状态,解释入口检查、WriterTo/ReaderFrom 快路径与安全修复方式。428 收藏 -
gif.EncodeAll 要求 Image、Delay 与非 nil Disposal 按帧对齐。本文给出严格检查、同步筛帧和受控补齐的安全写法。143 收藏 -
Go image.Decode 返回 image: unknown format,通常是 JPEG 或 PNG codec 没有注册。本文解释空白导入触发 init 注册的原因,并比较通用解码、专用解码与 DecodeConfig 的适用边界。189 收藏 -
Go 的 hash.Hash32 与 hash.Hash64 仍通过公共 Hash 接口提供 Sum(b []byte) []byte,同时用 Sum32 和 Sum64 返回数值摘要。本文拆解接口分层、前缀追加语义和字节序选择。499 收藏 -
Go types.Identical 按语言规范比较完整类型身份,结构体标签也必须一致;IdenticalIgnoreTags 只在同一套比较中忽略 struct tag。本文用最小示例说明字段、嵌套结构、命名类型和转换判断仍然不能被忽略。126 收藏 -
token.Pos 是 Go FileSet 中的全局位置值,不是单个源文件的字节下标。本文说明如何通过 token.File.Offset 转换文件内偏移,并处理 NoPos、跨文件和 //line 行列映射。218 收藏