Go语言技术文章
-
用 PHP IntlDateFormatter 解析国际化日期时,setLenient(false) 可关闭宽松纠正,再结合 parse 返回值、offset 和 intl_get_error_code 判断非法日期与部分匹配。129 收藏 -
PHP array_key_last 可以直接取得数组最后一个键,不会移动数组内部指针;空数组返回 null。本文说明数字键与字符串键的返回形式,并比较 end/key 组合的指针副作用。371 收藏 -
PHP fputcsv 的 escape 设为空字符串,可以关闭 PHP 专有转义机制,让字段内的引号按 enclosure 双写规则处理。本文解释它与默认反斜杠的差异、写读两端的配置方式,以及 PHP 8.4 起显式传参的兼容注意事项。135 收藏 -
Go testing.T.Attr 的键不能包含 Unicode 空白,值不能包含回车或换行;违规时会让测试失败并跳过该属性。本文解释约束来源、错误模型,以及如何把自由文本稳定映射为可记录的单行属性。255 收藏 -
Go net/http.Transport 资源没有释放时,先检查 Response.Body 是否关闭并区分活动连接与空闲连接,再用连接池参数和生命周期清理控制资源回收。424 收藏 -
io.OffsetWriter 把逻辑偏移映射到基准偏移之上,Seek 返回的是逻辑位置,Write 和 WriteAt 的坐标也不能混看。本文用分段写入场景拆解错位原因,并给出调用约定、边界处理与排查清单。194 收藏 -
Go 的 Cmd.Wait 不只等待主进程退出,还可能等待 stdout、stderr 的复制循环收尾。本文用 WaitDelay 拆解后代进程遗留管道导致的阻塞,演示如何设置等待上限并用 errors.Is 判断 ErrWaitDelay,同时说明阻塞 Writer 和进程树管理的边界。359 收藏 -
连续调用 slices.Delete 时不要继续照搬旧下标。本文用反向删除和区间合并两种方案处理索引偏移,并说明边界检查、排序与容量复用的注意点。126 收藏 -
os.MkdirTemp 不接受 perm 参数,而是按 0700 创建临时目录。本文解释这一安全边界、umask 影响、清理责任,以及多进程确需共享时的处理方式。472 收藏 -
Golang · Go问答 | 4天前 | go · 垃圾回收 · 资源管理 · 运行时 · 排错 · Go 垃圾回收 资源清理 runtime.AddCleanup runtime.KeepAlive runtime.Cleanup.Stop
Go Cleanup.Stop 对已经因对象不可达而排队的清理函数不会生效。本文从取消窗口、对象可达性、KeepAlive 位置和闭包反向引用四个方面说明原因,并给出显式释放与兜底清理的配合写法。383 收藏 -
Go 1.22 起 archive/zip.Writer.AddFS 可以从 fs.FS 遍历目录并按原结构写入 ZIP。本文给出完整写法,说明 AddFS 与 Close 的错误处理,以及需要过滤文件或修改元数据时的取舍。208 收藏 -
HostLayout 约束的是 Go 结构体在当前主机上的内存布局,不是跨平台、跨进程或长期存储的字节协议。本文从一个布局误用场景拆解原因,并用 encoding/binary 演示如何显式指定字段宽度与字节序。393 收藏 -
os.Readlink 返回的是符号链接保存的目标文字。本文说明相对目标为什么要以链接所在目录为基准,如何处理绝对路径和错误边界,以及何时改用 filepath.EvalSymlinks。481 收藏 -
用 fs.FileInfo 包装类型实现 tar.FileInfoNames 的 Uname 与 Gname,让 FileInfoHeader 写入固定的归档用户名和组名,并说明 UID、GID、路径和内容写入的边界。402 收藏 -
自定义 ResponseWriter 包装器如果没有 Unwrap,ResponseController 可能找不到 Flush、deadline、全双工和 Hijack 能力。本文从一次中间件故障出发,给出可转发包装器、能力检查和错误边界。424 收藏