Go教程技术文章
-
通过ParseAddr与IsUnspecified区分0.0.0.0、::和零值Addr,给出解析错误处理、状态对照表与配置记录模型,避免将无效值误判为普通有效IP。242 收藏 -
Go strconv.QuoteToGraphic 返回双引号 Go 字符串字面量,保留 Unicode 图形字符并把制表符、换行等非图形字符转成 Go 转义。本文说明输入边界、与 QuoteToASCII 的区别,以及日志和配置展示中的选型方法。242 收藏 -
用 Go slices.Compact 编写按行去重工具,区分相邻去重和排序后全局去重,提供完整代码、输入容量限制、错误处理与数量对比,并说明性能测量和切片共享的边界。242 收藏 -
让 json.Encoder 直接写最终 Writer,减少应用层字节和字符串往返;需要暂存时复用 Buffer,同时处理容量保留、Bytes 借用、并发和错误边界,不承诺零分配。242 收藏 -
用 Pond v2 的 NewSubpool 设置局部并发上限,解释子池与父池的共享额度、任务结果等待、退出顺序,以及资源预留误解和嵌套等待风险。241 收藏 -
Go types.Sizes.Alignof 描述目标模型中的对齐要求,不能直接代替字段偏移或填充。本文用结构体示例配合 Offsetsof、Sizeof,说明架构选择与布局报告的边界。241 收藏 -
crypto/rand.Int 返回 [0,max) 范围内的均匀安全随机整数,但 max <= 0 会触发 panic。本文从上界边界、big.Int 构造、错误处理和取模偏差四个角度给出可直接复用的 Go 写法。241 收藏 -
遍历 database/sql.Rows 时,Next 返回 false 不代表一定成功。本文区分 Scan、Rows.Err 与 Rows.Close 的职责,说明自然遍历结束、提前停止和驱动关闭错误的处理顺序。241 收藏 -
Go os.Root.Chown 只负责在 Root 范围内调用系统的属主修改能力,返回权限错误通常与当前进程的 uid/gid 权限、平台支持、文件系统策略或符号链接语义有关。本文给出最小调用、错误分类和 Chown/Lchown 的选择方式。240 收藏 -
归档读取器拿到 CodePage437 原始名称字节后,应先用 charmap.CodePage437.NewDecoder() 转成 UTF-8,再交给文件名或展示层。本文给出短字节和流式读取两种写法,并整理标志位、错误处理、日志和回滚边界。240 收藏 -
使用 go-imap v2 把本地 RFC 822 邮件追加到指定邮箱,重点说明 Append 的邮件大小、AppendOptions、Write、Close 与 Wait 的调用顺序,以及权限、大小限制和重复投递边界。240 收藏 -
go-mp3 的时长应按解码后的字节数、每个采样的4字节格式和首帧采样率计算。本文给出可寻址文件与非可寻址流两种处理方式,并说明 Length 返回 -1 时的累计策略。240 收藏 -
用 go/types 生成 Go 类型文档时,可变参数在 Params 中表现为最后一个切片,是否显示省略号由 Signature.Variadic 决定。本文说明如何使用 WriteSignature,以及如何安全地实现自定义参数渲染。240 收藏 -
Go 1.24 的 testing.T.Chdir 会把原工作目录交给 Cleanup 恢复,测试断言失败也不会把后续测试留在临时目录。本文用 t.TempDir 说明失败路径、PWD 更新、并行限制,以及旧版本的兼容写法。240 收藏 -
Go 1.27 的 vet printf 分析器会提示一种容易被忽略的错误包装:错误类型本身实现了 error,却把指针作为 %w 操作数。本文解释它为何影响 errors.As,以及怎样修复并纳入持续检查。239 收藏