Go语言技术文章
-
Go x/text/encoding/charmap 的 EncodeRune 接收一个 rune,返回目标单字节编码中的 byte 和一个 bool。本文说明如何用 ok 判断字符能否编码,如何定位整段文本中的不可表示字符,以及何时改用 NewEncoder 或 UTF-8。404 收藏 -
transform.Chain 只负责按顺序组合转换器,不会自动扩展调用方提供的 dst。本文用 x/text/runes 和 transform 的例子说明 ErrShortDst、nDst、nSrc 的正确处理,以及 transform.Writer 在 Close 时刷新尾部数据的原因。404 收藏 -
Gonum optimize 的 initX 会改变搜索起点和后续路径。本文用双谷目标函数说明局部解差异的来源,并给出多起点、尺度检查和结果复查方法。404 收藏 -
解释 Go time.Ticker 停止后为什么不能自动清理消费 goroutine,并给出用 context.Done 协作退出、用 defer Stop 收尾 ticker 的实用写法。404 收藏 -
go mod tidy 失败时,先按模块路径、版本选择、代理下载和本地文件四类原因分流,再用 go list、go env 和文件 diff 缩小范围。本文给出可重复的排查命令,以及修复后的干净回归方法。404 收藏 -
Go 工具链在目录、终端和 CI 中选择不同版本时,如何核对 PATH、GOTOOLCHAIN 与项目声明,控制执行来源并记录实际版本。404 收藏 -
Go flag.FlagSet 参数不生效时,应核对注册集合、Parse 入参和选项位置。本文给出独立解析函数,说明位置参数、布尔赋值、子命令与错误处理的常见问题,并提供排查速查表。404 收藏 -
Golang · Go教程 | 1星期前 | 并发 · 标准库 · 定时任务 · 性能优化 · Go教程 · 批处理 计时器 Go 内存分配 time.Ticker Ticker.Reset Ticker.Stop
Go time.Ticker 的关键不在于盲目调用 Stop,而在于明确 ticker 的生命周期:用 context.Done 结束周期任务,用 Stop 停止后续 tick,用 Reset 复用同一任务内的节拍,避免批处理循环反复创建 ticker 和失去资源归属。404 收藏 -
Golang · Go教程 | 3天前 | 并发 · 标准库 · Go教程 · 性能排查 · Go Goroutine context runtime/trace trace.Log trace.NewTask trace.WithRegion
runtime/trace 中,trace.NewTask 建立跨 goroutine 的逻辑任务,trace.WithRegion 记录当前 goroutine 的时间区间,trace.Log 写入同一任务的一次性事件。本文用同一个 context 把三者对齐,并梳理日志缺失、region 归属错误和高基数命名的常见根因。404 收藏 -
说明fmt.Errorf多层%w包装保留错误链的写法,结合Is、As定位断链,并区分Go 1.20多个%w形成的错误分支与Unwrap限制。404 收藏 -
Go TLS 的 ConnectionState().NegotiatedProtocol 为空,通常表示未配置 ALPN、两端 NextProtos 没有共同项,或状态读取早于握手完成。本文按客户端列表、服务端选择和状态读取三个边界给出排查方法。404 收藏 -
Go 的 big.Rat 可以用 RatString 保留精确分数,用 FloatString 按指定的小数位输出十进制。本文解释两者的格式差异、舍入规则和适用场景。404 收藏 -
Go 源码分析工具经常要同时处理多个文件。本文从 token.NewFileSet 出发,说明 FileSet、File、Pos 的关系,演示 parser.ParseFile 如何共享位置空间,以及怎样用 Position 和 File 找回文件名、行列和偏移。404 收藏 -
slog.LogValuer 可以把复杂对象转换成结构化日志值,但如果直接把令牌、邮箱或请求头塞进 Attr,日志脱敏就会失效。本文从 LogValue 的降级边界出发,演示组字段、零值和审计检查如何组合,避免调试信息变成敏感数据出口。403 收藏 -
io.Pipe 没有内部缓冲,它用同步的 PipeReader 和 PipeWriter 把生产者与消费者接起来。本文用一个流式导出示例说明 Write 为什么会阻塞、CloseWithError 如何传递失败,以及怎样避免 goroutine 泄漏。403 收藏