Go语言技术文章
-
Go x/text/encoding/unicode 的 ExpectBOM 会要求 UTF-16 输入以 BOM 开始,没有签名的字节流会返回 ErrMissingBOM。本文对比三种 BOMPolicy,演示解码、编码和 transform.Reader 的正确使用边界。430 收藏 -
本文用一个最小 Go 结算示例说明 shopspring/decimal 如何通过 RoundBank 实现银行家舍入,涵盖字符串金额解析、保留两位小数、中点取偶数、负数与 StringFixed 展示边界。430 收藏 -
使用 Squirrel Eq 构造可选筛选条件,通过完整函数区分省略、false、0、SQL NULL 和 IN 列表,并说明固定列名、占位符及 SQL 与 args 配对的边界。430 收藏 -
Golang · Go教程 | 1星期前 | 错误处理 · go · encoding/json · Go errors.Is errors.As Unwrap json.MarshalerError
json.Marshal 调用自定义 Marshaler 失败时会包装为 MarshalerError。本文用一个可比较的底层错误演示 Unwrap、errors.Is 和 errors.As 的组合处理方式。430 收藏 -
Go os.Lstat 只返回目录项元数据,不会像 os.Open 那样返回需要 Close 的文件对象。遇到资源没有释放时,应沿调用链检查目录迭代器、打开的文件、外部命令和管道,并保留 Lstat 的原始错误链。430 收藏 -
Go unicode.ToTitle 接收一个 rune 并返回对应的 Unicode 标题大小写形式。本文从 ToUpper、ToLower 的差异讲到 UTF-8 字节与 rune 的边界,给出可复用的逐 rune 转换写法。430 收藏 -
Go token.FileSet 的 Read 与 Write 保存的是文件区间、行偏移和行指令等位置元数据,不是源文件内容。本文用 gob 回调展示如何保存并恢复映射,并说明为什么恢复时应使用新的 FileSet。430 收藏 -
Go select 带 default 时不会等待通道就绪,放进循环容易形成忙轮询。本文说明 CPU 占用升高的原因,并给出阻塞等待、ticker 节拍和退出处理的写法。430 收藏 -
Go Lip Gloss 的 Width 参与块布局和文本换行,MaxWidth 则在渲染完成后逐行截断。本文结合边框、内边距和 Inline,说明两者的渲染时机与选择方法。429 收藏 -
Go io.SectionReader.Outer 可以取回创建读取窗口时的底层 ReaderAt、起始偏移和长度。本文结合 Read、ReadAt、Seek 与 Size 说明它的职责边界和版本兼容取舍。429 收藏 -
Go Transport 连接池复用失效时,不要先盲目调大连接数。本文从复用前提、Response.Body、httptrace、连接池参数和服务端边界五个方面给出排查与配置方案。429 收藏 -
Go go-colorful的RGB、Lab和CIEDE2000距离采用不同颜色空间与公式。本文演示同一对颜色的比较,说明0到1输入、结果缩放、最近色排序及阈值不能混用的原因。429 收藏 -
iter.Pull 不负责管理调用方的缓冲区。本文用 dst[:0] 保留 slice 容量,演示如何逐项拉取、提前停止和处理切片别名,并说明何时直接使用 slices.AppendSeq。429 收藏 -
按 QueryContext、Next、Scan、Err 和 Close 定位 sql.Rows 使用问题,说明空结果、NULL 扫描、提前停止及连接池生命周期,并给出完整消费函数。429 收藏 -
Go types.Interface.Empty 判断空接口的整体类型集合语义,不能用显式方法数量代替。本文比较嵌入方法、类型项和 comparable 约束,并解释空接口与空类型集合的区别。429 收藏