Go语言技术文章
-
Go 使用 json.Decoder 时,io.EOF 通常表示输入流已经正常结束,不等于 JSON 格式错误。本文用代码区分 EOF、空输入、UnexpectedEOF 和真正语法错误。444 收藏 -
Go test ./... 返回很快并不一定是测试没执行,本文区分本地目录模式与包列表模式,说明如何识别 (cached)、用 -count=1 强制重跑,并选择 GODEBUG 与 testcache 清理范围。444 收藏 -
Go zip.NewReader 不能直接接收普通 io.Reader。本文用 bytes.Reader 和临时文件说明如何提供 ReaderAt、准确 size,并正确处理 ZIP 成员资源。444 收藏 -
用 Go testing.T Cleanup 分层管理共享 fixture 与子测试资源,配合 T.Run 的等待边界协调 Parallel 测试,避免清理过早和闭包串数据。444 收藏 -
用 Go iter.Pull 把 iter.Seq 推送式迭代器转换成按需调用的 next 函数,说明 stop 的释放责任、提前退出和空序列边界。444 收藏 -
Go 的 //go:embed 在目录模式下会递归排除点号或下划线开头的文件。本文对比目录、星号与 all: 三种模式,解释嵌套隐藏文件、模块边界和构建失败规则,并给出 WalkDir 排查方法。444 收藏 -
用 Go B.Run 与 B.Loop 对比 1 KiB、4 KiB、32 KiB、128 KiB 缓冲区,固定负载并隐藏 io.CopyBuffer 快速路径,结合吞吐和内存指标选型。444 收藏 -
Go 包迁移时,type A = B 只增加一个兼容名称,不会创建新类型,因此 reflect.Type 的 Name 和 PkgPath 仍然对应原定义类型。本文用一个小项目区分类型别名与类型定义,并给出以 reflect.Type 身份比较替代字符串判断的兼容方案。444 收藏 -
Go tcell 程序退出时要把 Screen.Fini 绑定到初始化成功后的生命周期,让正常返回、Ctrl+C 和 panic 都经过清理出口;同时说明 os.Exit、SIGKILL 等不会执行 defer 的边界。444 收藏 -
Golang · Go问答 | 1个月前 | go · 异步任务 · javascript · setTimeout Promise 事件循环 Go Goja goja_nodejs event loop
Goja 能处理 Promise 反应任务,但不会凭空提供浏览器或 Node.js 那样的定时器事件循环。本文区分 job queue 与 setTimeout,说明 RunString 的边界,并给出 goja_nodejs/eventloop 的接入方式。444 收藏 -
Go接口如何限制请求体字节数?通过MaxBytesReader改造读取边界,区分413与400,说明JSON尾部、上传与回归用例的处理。444 收藏 -
Go 的 io/fs 使用统一的虚拟路径语法。本文说明 fs.ValidPath 如何拒绝空段、点段和首尾斜杠,怎样在 FS.Open 前接入校验,以及反斜杠、文件存在性和目录隔离的边界。444 收藏 -
Go map 在 range 期间新增键可能被访问,也可能不会被访问。本文区分单协程修改与并发读写,给出键快照和显式待处理队列两种稳定方案。444 收藏 -
Go build 与 go vet 结果不同不一定是工具链异常。本文通过一个格式参数错误的小模块,区分编译、vet 和测试职责,给出修复代码及本地与 CI 的环境对齐方法。444 收藏 -
Go 1.23 起可以直接用 os.CopyFS 把 fs.FS 的目录树复制到磁盘。本文从 os.DirFS 和 fs.Sub 的根路径开始,给出嵌入文件与本地目录示例,并排查已存在文件、路径和权限错误。444 收藏