Go语言技术文章
-
解释 Go color.NRGBA 的非预乘存储、RGBA() 的 16 位预乘返回值,以及 draw.Over 中 Alpha 如何参与混合,附固定输入的换算示例和常见边界。450 收藏 -
Go flag.Func 的回调返回 error 后,退出动作通常来自默认的 ExitOnError,而不是回调函数本身。本文拆解解析链路,并给出 ContinueOnError 的可控处理方案。450 收藏 -
bytes.Reader.WriteTo 会消费当前未读区间,完整导出后 Len 变为 0。本文解释读取索引为什么推进,并给出复用 Reader、重读原始字节和随机读取时的安全写法。450 收藏 -
bbolt 的 DB.View 会提供一个一致的只读事务视图,Tx.WriteTo 可以把该视图写入 io.Writer,Tx.CopyFile 则适合直接生成备份文件。本文给出两种导出方式的 Go 写法,并说明权限、错误处理和事务生命周期。450 收藏 -
用 Go log/slog 设计结构化日志字段时,把服务固定字段、请求上下文和事件字段分层,再用 Handler 统一分组与敏感字段脱敏,日志更容易检索和维护。450 收藏 -
Go database/sql Tx 提交后查询不一致时,分开记录事务内读取、Commit回执与事务外新查询,核对查询入口、错误阶段、数据源和主键条件,避免误判提交失败或盲目重试。450 收藏 -
Go html/template 会按 URL 上下文过滤动态 javascript: 协议,并可能输出 #ZgotmplZ。本文解释过滤原因、template.URL 的安全边界,以及把点击行为改成普通链接或严格 allowlist 的做法。450 收藏 -
Go x/text/currency 的 ParseISO 用于解析三字母 ISO 4217 货币代码。本文说明如何处理格式或未知代码错误,并区分 Unit、Amount、Formatter 与 MustParseISO 的职责边界。450 收藏 -
通过 WithPanicHandler 为 Ants 任务配置统一异常处理,提供完整 Go 示例,说明堆栈记录、任务计数、回调完成通知,以及提交失败、业务失败和重试的区别。450 收藏 -
Go io/fs.Sub 可以从已有 fs.FS 派生一个只看到指定子目录的新文件系统视图。本文用 fstest.MapFS 说明路径前缀、根目录、错误处理和 embed.FS 迁移时的实用边界。450 收藏 -
Go HTTP 请求返回 EOF 时,先按 Client.Do、Response.Body 读取和 JSON 解码三个阶段定位,再结合状态码、正文长度和接口契约区分服务端连接提前结束、空响应、传输截断与解析失败。450 收藏 -
Go 1.26+ 使用 errors.AsType 提取包装错误中的具体类型,本文说明 %w、错误树、指针目标、nil 结果和从 errors.As 迁移时的边界。450 收藏 -
Go 中读取 TLS 协商协议的关键是先完成握手,再从 tls.ConnectionState.NegotiatedProtocol 读取 ALPN 结果。本文说明握手状态、空协议名、TLS 版本、密码套件和日志记录之间的关系。450 收藏 -
Go 中 nil 切片和空切片的 len 都是 0,但 reflect.DeepEqual 会因为 nil 状态不同返回 false。本文用最小示例解释原因,并比较 DeepEqual、slices.Equal 与规范化写法的适用边界。449 收藏 -
用 fs.FS 统一 Go 对磁盘目录和 embed.FS 的读取,讲清 fs.ReadFile、os.DirFS、fs.Sub、路径规则与错误边界。449 收藏