Go语言技术文章
-
Go 的 io.ByteScanner.UnreadByte 不是通用回退栈:它只约定回退最近一次成功的 ReadByte。本文用 token 读取示例说明连续回退、其他读取操作和 EOF 后的状态边界。412 收藏 -
sort.Search 找不到目标时返回 len 并不是越界,而是把第一个满足条件的位置定义为插入点。本文用单调谓词、边界表和可运行代码说明闭区间、找不到与插入位置的关系。411 收藏 -
讲清 os.File.Truncate 改短文件时的文件长度、当前偏移量和落盘检查,给出可复现的配置文件更新写法。411 收藏 -
Go 写文件时,os.File.Sync 成功并不等于包含它的目录项也完成持久化。本文用临时文件、重命名和目录同步的完整流程,说明崩溃恢复时该看哪些边界。410 收藏 -
Go slog 适合结构化记录请求和业务事件,但把请求对象直接写入日志很容易带出手机号、令牌或地址。本文用字段白名单、LogValuer 和审计分层,搭一套可检查、可回退的日志边界。410 收藏 -
io/fs.ValidPath 专门判断文件系统接口使用的相对路径是否合规。本文从点号、斜杠、空路径和归档条目四个边界入手,给出可运行的校验代码以及如何避免把合法嵌套路径误判成危险输入。408 收藏 -
用一个懒加载配置的实战场景,拆解 Go sync 标准库如何让并发调用共享一次初始化结果,重点说明错误也会被缓存、失败重试为何必须创建新实例,以及如何用测试验证并发语义。408 收藏 -
Go 1.25 为 testing.T、B、F 增加了 Output 方法。它把 io.Writer 接到同一条测试输出流,保留测试归属和内部缓冲,适合替代 fmt.Println 记录并行测试日志。本文拆开调用链、换行刷新和生命周期边界。408 收藏 -
用一个可运行的 Go 示例拆开 reflect.Value 的 CanSet、CanInterface 和 MethodByName 边界,说明什么时候会 panic,以及如何在反射入口先做类型、有效性和可导出性检查。407 收藏 -
用 testing.TB.Context 把测试生命周期传给子协程,处理取消时机、Cleanup 顺序和 goroutine 退出验收,避免测试结束后仍有后台工作。407 收藏 -
在 Go 服务中把外部 DTO 隔离在防腐层,能把供应商字段变化挡在接口边界外;本文用订单状态同步示例说明映射、校验、版本兼容与测试验收如何落地。406 收藏 -
Golang · Go问答 | 6天前 | golang · 路由 · net/http · Go问答 · ServeMux · 兼容迁移 · net/http 通配符 路径参数 ServeMux Go问答 Go 1.22 PathValue
Go 1.22 为 net/http.ServeMux 增加了方法模式、命名通配符和 Request.PathValue。本文用订单详情路由拆解单段参数、末尾多段参数、方法匹配、URL 解码和旧版 Go 兼容边界。404 收藏 -
slog.LogValuer 可以把复杂对象转换成结构化日志值,但如果直接把令牌、邮箱或请求头塞进 Attr,日志脱敏就会失效。本文从 LogValue 的降级边界出发,演示组字段、零值和审计检查如何组合,避免调试信息变成敏感数据出口。403 收藏 -
io.Pipe 没有内部缓冲,它用同步的 PipeReader 和 PipeWriter 把生产者与消费者接起来。本文用一个流式导出示例说明 Write 为什么会阻塞、CloseWithError 如何传递失败,以及怎样避免 goroutine 泄漏。403 收藏 -
用户输入被拼进 Go 正则表达式时,regexp.QuoteMeta 可以把元字符变成字面量。本文用搜索过滤场景拆开转义、拼接、匹配和空输入边界。400 收藏