Go教程技术文章
-
Go compress/flate.Writer 没有可直接填写的公开字段,可选行为要通过 NewWriter、NewWriterDict 的参数以及 Write、Flush、Close、Reset 的生命周期来表达。本文区分压缩级别、预置字典、流式刷新和 Writer 复用的职责,并给出错误处理与配置封装示例。229 收藏 -
Go 用 crypto/sha512 计算文件 SHA-512 时,正确做法是让文件流写入 sha512.New 返回的哈希对象,再读取 Sum(nil)。本文解释空摘要、摘要长度不对、读取错误和重复复用对象导致结果异常的原因。229 收藏 -
Go 的 go/doc/comment.Parser 负责把文档注释解析成 Doc,但包名与当前包符号是否能成为 DocLink,需要 LookupPackage 和 LookupSym 提供上下文。本文用一个自包含示例说明两个回调的参数、返回值、默认行为和常见边界。229 收藏 -
Go 的 log/slog 可以把日志级别过滤交给 HandlerOptions,但固定 Level 与可动态调整的 LevelVar 适用场景不同。本文用 JSONHandler、测试缓冲区和最小示例说明过滤发生在哪里,以及如何验证 DEBUG 是否真的被挡住。228 收藏 -
排查 Go context.WithDeadline 提前结束的问题,理解父级截止时间只会更早不会更晚的继承规则,并用剩余预算、HTTP 超时和测试日志完成可复现核对。228 收藏 -
sync.Cond 适合把“队列未满”和“队列非空”这两个条件变成可等待、可唤醒的并发协议。本文用 Go 实现一个固定容量任务队列,说明 Wait 为什么必须放在条件循环中,以及满队列、空队列和关闭状态如何安全退出。228 收藏 -
Go 泛型调用报错时,问题常常不在类型参数本身,而在约束的类型集、方法集与调用点能否同时建立推导方程。本文用三个最小例子拆开接口约束、显式实例化和返回值推导的边界。228 收藏 -
围绕 Go 子测试 t.Parallel 的调度边界,区分只读夹具与可变资源,给出每个子测试独立创建、清理和用 -race 重复验证的做法。228 收藏 -
解释 Go 泛型接收者参数与方法自身类型参数的区别,说明 List[E]、Pair[First, _] 和 Map[R] 的声明位置、参数映射与 Go 1.27 的接口边界。228 收藏 -
Go 执行跟踪能把 goroutine 的创建、运行、阻塞、唤醒、系统调用和 GC 事件放在同一时间语义下。本文通过一个尾延迟复盘示例,讲清 sched、sync、net、syscall 派生 profile 的用法,以及如何从事件栈定位调度等待与阻塞根因。228 收藏 -
Go huh 的可访问模式会放弃 Bubble Tea 的 TUI 重绘,改用更适合屏幕阅读器、CI 和脚本输入的普通终端提示。本文说明如何通过环境变量、Reader、Writer 和字段校验配置一份可复用的表单。228 收藏 -
Go io.Pipe 是没有内部缓冲的同步内存管道:PipeWriter.Write 会等到 PipeReader 消费数据后才完成。本文从生产者消费者串流出发,说明正常关闭、CloseWithError、读端取消与背压边界。228 收藏 -
Go big.Int.SetString 解析大整数时需明确进制并检查成功标志。本文说明十进制与自动进制的差异、失败时接收者状态,以及临时对象提交和独立副本的用法。228 收藏 -
用 sync.Cond 把空队列等待、生产者入队和消费者唤醒连起来,重点说明 Wait 必须放在条件循环中,以及 Signal、Broadcast 和退出处理的边界。228 收藏 -
Go collate.Key 可预生成语言排序键供重复比较使用。本文给出复制键后稳定排序的写法,解释 Buffer.Reset 有效期、配置一致性、缓存重建和内存取舍。228 收藏