Go语言技术文章
-
Go archive/tar 写入长路径时报 header field too long 时,重点检查是否强制使用 USTAR;通过默认格式选择或 PAX 保留完整名称,并区分读取时的路径安全错误。208 收藏 -
Go range 遍历结构体切片时,循环变量拿到的是元素副本。本文说明为什么字段修改不会回写,并给出索引回写、指针切片和 map 结构体的正确处理方式。208 收藏 -
讲清 Go http.Client 如何借助 CookieJar 在重定向中按域名、路径和安全属性保留正确 Cookie,并给出公共后缀列表、CheckRedirect 与排查清单。206 收藏 -
context.WithDeadlineCause 超时后,ctx.Err() 通常只返回 context deadline exceeded,具体原因要用 context.Cause(ctx) 读取;本文同时说明提前 cancel 和父上下文先取消时的边界。205 收藏 -
在 Go 的 PATCH 请求中,用 jsonnull 只包装需要区分缺失、JSON null 和空数组的字段,避免三态语义扩散到响应模型和数据库模型。204 收藏 -
Go 的 url.Values.Encode 会按 key 排序并完成 URL 编码,但不会替你制定完整的签名协议。本文说明重复参数、特殊字符和签名字段如何纳入同一份规范化字符串。204 收藏 -
Go text/template 的 missingkey 不是统一的必选项:default 保留兼容行为,zero 返回元素类型零值,error 让 Execute 立即失败。本文按模板用途给出选择方法和落地清单。204 收藏 -
Go 的 encoding/csv 可以把引号字段里的换行当作字段内容,而不是新记录。本文用 Reader.Read、FieldsPerRecord 和 ParseError 处理多行字段,并区分 EOF、字段数不一致与引号语法错误。203 收藏 -
Go context.AfterFunc 适合在上下文取消时触发连接、临时文件等资源的兜底回收,但 stop 只解除回调关联,不等待回调结束。本文用 stop、完成信号和 sync.Once 拆解正常完成与取消竞态。202 收藏 -
Go draw.DrawMask 使用遮罩时边缘颜色变淡,通常是 mask alpha 参与 draw.Over 合成造成的。本文说明 DrawMask 坐标对齐、Over 与 Src 的区别,以及 RGBA/NRGBA 颜色模型的排查方法。201 收藏 -
Decoder.InputOffset 记录的是解码器当前位置,不一定就是坏字段。处理 JSON 解析失败时,先读取 SyntaxError.Offset,再用 InputOffset 和附近字节片段缩小排查范围。201 收藏 -
Go 的 string 按字节保存,按字节截断中文或表情可能切入 UTF-8 编码中间。本文用 unicode/utf8 设计安全的字节上限切分函数,并说明非法输入、rune 计数和性能边界。200 收藏 -
Go GODEBUG 并不是简单的“一次运行开关”。本文区分临时环境变量、shell 继承、go.mod 的 godebug、//go:debug 和进程启动后的修改边界,帮助你判断配置到底影响谁。199 收藏 -
Go embedding 会把嵌入字段的部分方法提升到外层结构体,但值与指针接收者仍受方法集规则限制。本文用字段路径、同名冲突和接口赋值说明如何正确读取与转换。199 收藏 -
Go 的 QueryRow 不在调用处直接返回查询错误,真正的读取、类型转换和无行判断都要从 Scan 处理。本文用一个单行查询示例说明列映射、sql.ErrNoRows、NULL 字段和 QueryRowContext 的边界。199 收藏