Go语言技术文章
-
Go 1.24 正式支持泛型类型别名,适合把旧包里的泛型类型平滑迁到新包。本文从包重构场景出发,说明别名与新类型的差异、旧代码影响、迁移步骤和最小验证方法。400 收藏 -
用户输入被拼进 Go 正则表达式时,regexp.QuoteMeta 可以把元字符变成字面量。本文用搜索过滤场景拆开转义、拼接、匹配和空输入边界。400 收藏 -
从 Logger、Handler、WithAttrs 和 WithGroup 的调用关系入手,解释结构化日志字段如何进入 Record,以及自定义 Handler 面对并发写入时应该承担哪些边界。400 收藏 -
Go database/sql 查询完成后,Rows.Close 仍可能报告驱动或网络错误。本文用一个可复现的事务流程说明关闭、读取错误与 Commit 的检查顺序。400 收藏 -
net/http.Request.BasicAuth 返回的 ok 布尔值用于区分没有 Basic Authentication 与用户名密码为空。本文用请求头样例和可运行测试拆开三种边界,避免把空密码误判成未认证。400 收藏 -
QueryContext 取消后连接不一定立刻回到连接池。本文从 Rows 生命周期、驱动取消能力和 DB.Stats 观测三个角度定位原因,并给出可复用的释放与排查模板。400 收藏 -
围绕 database/sql.Rows.NextResultSet 处理多结果集,讲清 Next、Scan、NextResultSet、Err 和 Close 的调用顺序,并用空结果集与驱动支持差异做实战核对。399 收藏 -
调用 os.File.ReadAt 读取固定长度时,n 和 err 如何一起判断?本文用短读、文件尾和数据完整性三个场景,说明 io.EOF 的边界与可复用的处理代码。399 收藏 -
Go image.Decode 会根据已注册解码器的文件头特征识别图片格式并返回 format。本文说明空白导入、Reader 位置、DecodeConfig 和上传输入的资源限制。399 收藏 -
Go 普通 map 只有在初始化后不再写入时才适合被多个 goroutine 并发读取。本文拆开读写边界,说明 RWMutex、sync.Map、所有权模型和 race 检查器的使用场景。399 收藏 -
Go 中把 nil 指针放进接口后,接口本身可能不等于 nil,但方法仍可依据动态类型完成分派。本文用最小示例拆开 nil 接口、typed nil 和 nil 接收者的区别。399 收藏 -
io.LimitReader 返回 EOF 不代表底层 reader 一定结束。本文拆解 LimitedReader 的读取顺序,用字节数判断边界,并给出固定长度读取与额外探测的选择方法。399 收藏 -
解释 Go encoding/xml 的 Token API 为什么会让保存的 xml.CharData 被后续内容覆盖,并给出 CharData.Copy、string 和 CopyToken 的正确选择。399 收藏 -
Go 测试提前 Fatal 时,已注册的 t.Cleanup 仍会在测试边界执行。本文梳理后进先出、父子测试资源归属,以及异步 goroutine 错误回传的安全写法。399 收藏 -
Golang · Go教程 | 1星期前 | 日志 · 标准库 · 编码 · Go教程 · 二进制日志 Go encoding/hex hex.EncodeToString hex.Encode 十六进制编码
Go 中把请求 ID、摘要或协议字段写入日志时,直接输出 []byte 容易出现不可见字符。本文用 encoding/hex 给出可读编码、预分配、解码错误和长度边界的实践清单。399 收藏