Go语言技术文章
-
Go os.ReadDir 会返回按文件名排序的 fs.DirEntry 清单;本文说明 DirEntry 与 Info 的分工、部分读取错误,以及大目录使用 File.ReadDir(n) 的实现边界。388 收藏 -
Go 1.24 引入 os.OpenRoot 和 os.Root,用根目录句柄处理外部相对路径,避免 filepath.Join 形成的目录逃逸。本文拆解读写、子目录、错误处理和平台边界。184 收藏 -
用 Go 标准库 fs.FileInfoToDirEntry 把已有 FileInfo 适配为 DirEntry,说明 Name、IsDir、Type、Info 的映射关系,以及 nil 输入、类型断言和 Info 错误的处理边界。389 收藏 -
fs.ValidPath 判断的是 io/fs 名称语法,不是任意本机相对路径。通过路径元素示例和 Open 封装,区分根目录特例、业务命名、本地转换、文件存在性与实际访问错误。426 收藏 -
Go 按分钟对齐时间的最小写法是 t.Truncate(time.Minute)。本文说明它的绝对时间语义、返回值和时区边界,并比较 Truncate、Round 与 time.Date 的适用场景。486 收藏 -
本文用一个小型 Go 工具说明 time.Time.UnixMilli 如何生成毫秒时间戳,解释 UnixMilli 与 Unix 的单位区别、1970 年以前的负值、双向还原以及 JSON 和数据库边界的统一约定。252 收藏 -
Go 的 time.Ticker 退出时不能只停业务循环,还要明确 Stop、ticker.C 和消费协程的生命周期。本文用一个可复用的退出模式说明如何停止 ticker、等待 goroutine 并避免通道误用。132 收藏 -
Go 1.23 起使用 net.Dialer.KeepAliveConfig 明确设置 TCP 保活开关、空闲时间、探测间隔和未应答次数,并说明旧字段与平台差异。185 收藏 -
复用 Go time.Timer 时,Go 1.22 及更早版本要先 Stop 并排空通道再 Reset;Go 1.23 起通道型 Timer 的 Reset 语义消除了旧事件残留。本文按版本、通道所有权和 AfterFunc 边界给出可直接采用的处理方案。281 收藏 -
httputil.DumpResponse 没有响应头过滤参数。本文用复制 Response、复制 Header、大小写不敏感删除和 body=false 的方式生成安全调试摘要,并说明需要正文时怎样避免误伤原响应。486 收藏 -
Go context.AfterFunc 可在上下文取消后执行清理,但 stop 不代表清理完成。通过独占停止句柄和完成通道,组织正常返回与取消回调,接收清理错误,并明确并发访问、等待和资源所有权的限制。495 收藏 -
Go 的 os.MkdirTemp 会在指定或系统临时目录下创建带随机后缀的独立目录。本文用一个小型工作目录场景说明参数、权限、返回路径、清理责任和常见错误边界。274 收藏 -
Go 的 http.Request.GetBody 是重新取得请求体的可选工厂。本文说明 NewRequest 的自动设置边界、手动补齐方式,以及再次调用 Client.Do 前怎样替换 Body。113 收藏 -
用 Go netip.ParseAddr 与 Addr.IsPrivate 识别 RFC 1918、RFC 4193 私有地址,处理 IPv4 映射边界,并区分地址分类与安全授权。116 收藏 -
通过MultipartReader逐部件接收单文件,用实际读取限额、文件上限、固定复制缓冲及并发准入控制资源。原创示例说明私有暂存、失败清理与成功交付的责任边界,避免把复制缓冲大小误当成进程内存上限。248 收藏