Go语言技术文章
-
os.DirFS 的根目录参数不能是空字符串,文件读取还要区分非法路径、文件不存在和权限错误。本文用 io/fs 的路径约束、errors.Is 和资源关闭写出清晰的异常分支,并提醒 DirFS 不等于符号链接隔离。148 收藏 -
Go WebSocket 关闭码应按所选库从读循环错误中提取。本文用 Gorilla CloseError 展示 Code 与 Text 的读取方式,说明 1005、1006、本地主动关闭和握手 HTTP 状态的区别。147 收藏 -
通过一个原始名称检查 CLI,说明怎样组合 fs.ValidPath、应用命名政策和 fs.Stat,区分格式、不存在及权限问题,并解释路径清理与目录访问的边界。147 收藏 -
bufio.Scanner 本身不负责关闭底层 Reader。本文用文件读取场景说明资源所有权、defer 释放、Scan 错误检查和长 token 边界,帮助定位文件句柄或连接没有回落的问题。147 收藏 -
Go 文件名平台后缀与构建注释必须同时满足。本文用冲突片段和互补实现说明如何修改文件命名、表达平台并集,并区分目标环境、额外标签及文件选择结果。146 收藏 -
Go 事务 Commit 返回成功后仍读取不到刚写入的数据,通常要先检查提交错误、查询条件、Tx 与 DB 是否混用,以及是否读到了延迟副本。本文按 database/sql 的事务边界给出排查与实现方式。146 收藏 -
Go io.LimitReader 可以把任意 io.Reader 包装成有字节上限的流。本文用一个小型文本导入工具说明如何消费受限输入、判断是否触达上限、处理底层错误,并比较它与 io.CopyN、http.MaxBytesReader 的使用边界。145 收藏 -
用 Go net/http 提供静态文件时,http.FileServer 不会替你决定 Cache-Control。本文通过 handler 包装器区分带 hash 的资源和 HTML 入口,讲清缓存头与条件请求的职责边界。145 收藏 -
介绍Go fs.WalkDir遍历embed.FS并读取正文的方法,通过完整示例说明子树路径、回调错误和SkipDir,分析资源内嵌的部署收益与更新边界。144 收藏 -
Go time.After 放在 select 循环里会在每轮创建新的 Timer。本文解释持续就绪分支下的定时器积压、Go 1.23 的垃圾回收变化,以及如何用一个可复用的 time.Timer 配合 Stop、排空和 Reset 降低分配压力。143 收藏 -
Go io.ReaderAt 的短读不能简单当成失败或成功。本文说明如何保留 n 个有效字节,区分正常尾部 EOF、固定块中途 ErrUnexpectedEOF 与底层 I/O 错误,并封装安全的定长读取函数。143 收藏 -
Go 的 time.Duration 底层按纳秒计数,外部配置却常用毫秒。本文用单一转换入口区分裸整数、time.Duration 和字符串时长,说明定时器、超时参数、零值、负值与溢出边界,避免单位混用导致等待时间异常。142 收藏 -
Go 的 slices.Compact 只合并连续相等元素,不会自动过滤空字符串或零值。本文用 nil、空切片、业务校验和 CompactFunc 说明异常分支及尾部清零的处理方式。140 收藏 -
使用 filepath.Rel 生成归档文件名时,应先确定 basePath 和 targPath,再处理返回错误与 ../ 结果,最后用 filepath.ToSlash 统一条目分隔符。本文给出可复用的小函数和跨平台边界。138 收藏 -
区分Go Timer Reset的新旧通道语义、兼容设置与已投递业务事件,给出单拥有者处理方式和时间观察样例,解释Reset布尔值、旧通知清理及AfterFunc回调边界。137 收藏