Go语言技术文章
-
Go 1.24 的 runtime.AddCleanup 适合为资源包装对象提供 GC 兜底,但 nil 指针、反向持有和退出时机都不能含糊处理。本文用分支基线和一个可显式关闭的文件包装器,说明异常路径应该如何收口。256 收藏 -
说明 time.Time.Round(0) 如何去掉单调时钟信息,区分 Equal、== 和 map 键规则,提供同源副本示例,并解释序列化、精度和 Location 一致性的边界。256 收藏 -
Golang · Go教程 | 1星期前 | 错误处理 · go · Go encoding/base64 CorruptInputError io.ErrUnexpectedEOF NewDecoder
围绕 Go base64.NewDecoder 的流式读取,区分正常 EOF、残缺量子导致的 io.ErrUnexpectedEOF 与非法字符导致的 CorruptInputError,并给出先消费 n 再处理 err 的代码模式。256 收藏 -
通过原地压缩减少结果切片分配,并明确相邻去重、返回长度、别名共享和长期容量保留的取舍。256 收藏 -
Go 的 sql.Rows 出现连接池等待或资源未释放时,先确认 Rows.Close 与 Rows.Err 的生命周期,再结合 DB.Stats、goroutine 和驱动日志定位真正的拥有者。本文给出可复用的代码与排查顺序。256 收藏 -
ExtensionsByType 并不返回空字符串,而是按 MIME 类型返回扩展名切片。本文区分 nil、空字符串和 error,并说明 TypeByExtension 与 AddExtensionType 的使用边界。256 收藏 -
net.Dialer KeepAlive 只负责 TCP 探活间隔,不能替代应用层心跳、HTTP 连接池或服务端空闲策略。本文用 Go 示例说明零值、负值和 KeepAliveConfig 的边界,并给出长连接空闲断开的分层排查与重连方法。256 收藏 -
go/types 的 Scope.Insert 不会覆盖同一作用域里已有的同名对象。本文用最小示例说明 nil 与旧对象返回值的区别,并梳理 Lookup、Names、Parent 以及子作用域遮蔽的边界。256 收藏 -
本文说明 strconv.QuoteRune 如何把单个 rune 转成可复用的 Go 字符字面量,并对比控制字符、Unicode、ASCII 与图形字符场景下的函数选择。256 收藏 -
Go 里响应头超时通常由 Transport.ResponseHeaderTimeout 控制,而 Client.Timeout 是覆盖连接、重定向和响应体读取的总预算。本文用一组可复用配置和错误判断示例说明两者如何分工。256 收藏 -
通过 os.Getwd 与 filepath.Abs 定位 Go 相对路径的解析基点,为外部配置提供显式绝对路径参数,并用 embed 管理随版本发布的只读模板,说明跨工作目录启动时的判断与错误处理。255 收藏 -
Golang · Go问答 | 3星期前 | 标准库 · go · 性能排查 · 直方图 运行时指标 Go runtime/metrics Float64Histogram Buckets Counts
Go runtime/metrics 的 Float64Histogram 返回边界与计数两个切片,本文说明 len(Buckets)-1 的长度关系、相邻边界区间、KindBad、空样本、Inf 边界和累计指标差分的处理方式。255 收藏 -
Go 的 ctx.Err() 适合判断 Canceled 和 DeadlineExceeded,context.Cause(ctx) 则能在设置取消原因后保留更具体的根因。本文用父子 Context、主动取消和超时三个场景说明两者如何配合。255 收藏 -
用 Go 的 filepath.WalkDir 递归遍历目录时,如何只收集指定后缀的文件?本文比较 WalkDir、ReadDir 和 Glob 的边界,并给出大小写统一、目录继续遍历和错误处理的实用写法。255 收藏 -
Go archive/tar 遍历时目录条目的内容为空并不一定是读取失败:TypeDir 只描述目录,不携带可读正文。本文用 Header、Reader.Next、Reader.Read 和文件类型判断拆开这个误区,并给出安全的遍历与提取写法。255 收藏