Go教程技术文章
-
Go zip.NewReader 不能直接接收普通 io.Reader。本文用 bytes.Reader 和临时文件说明如何提供 ReaderAt、准确 size,并正确处理 ZIP 成员资源。444 收藏 -
用 Go iter.Pull 把 iter.Seq 推送式迭代器转换成按需调用的 next 函数,说明 stop 的释放责任、提前退出和空序列边界。444 收藏 -
用 Go B.Run 与 B.Loop 对比 1 KiB、4 KiB、32 KiB、128 KiB 缓冲区,固定负载并隐藏 io.CopyBuffer 快速路径,结合吞吐和内存指标选型。444 收藏 -
Go tcell 程序退出时要把 Screen.Fini 绑定到初始化成功后的生命周期,让正常返回、Ctrl+C 和 panic 都经过清理出口;同时说明 os.Exit、SIGKILL 等不会执行 defer 的边界。444 收藏 -
Go接口如何限制请求体字节数?通过MaxBytesReader改造读取边界,区分413与400,说明JSON尾部、上传与回归用例的处理。444 收藏 -
Go 的 io/fs 使用统一的虚拟路径语法。本文说明 fs.ValidPath 如何拒绝空段、点段和首尾斜杠,怎样在 FS.Open 前接入校验,以及反斜杠、文件存在性和目录隔离的边界。444 收藏 -
Go 1.23 起可以直接用 os.CopyFS 把 fs.FS 的目录树复制到磁盘。本文从 os.DirFS 和 fs.Sub 的根路径开始,给出嵌入文件与本地目录示例,并排查已存在文件、路径和权限错误。444 收藏 -
用 Go Pond 的 NewGroup、SubmitErr 和 Wait 统一等待一批并发任务并收集错误,同时说明首个错误后的取消边界与 StopAndWait 收尾方式。444 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · 定时器 · Go教程 · Go time.Timer Timer.Reset Timer.Stop 定时器复用 asynctimerchan 旧事件
Go 1.23 默认 timer channel 已不会让 Reset 后读到旧事件,但旧版本或 asynctimerchan=1 仍需 Stop、排空 t.C 再 Reset。本文按版本、接收状态和 AfterFunc 边界给出可复用写法。443 收藏 -
用 Go slog.LogValuer 延迟展开业务对象:以轻量包装器配合 GroupValue 控制字段、脱敏和派生计算,并说明自定义 Handler、可变对象与 Resolve 的边界。443 收藏 -
Go 1.23 引入的 os.CopyFS 可以把 embed.FS 等 fs.FS 资源复制到本地目录。本文用一个嵌入静态资源的场景说明调用方式,并梳理目录创建、既有文件冲突、符号链接和首个错误的处理边界。443 收藏 -
在 Go 中用 crypto/rand.Read 生成固定长度的加密安全随机字节,说明切片长度、十六进制与 Base64 编码、错误边界,以及它和 math/rand 的使用区别。443 收藏 -
Go 判断链路本地 IP 时,可以先用 netip.ParseAddr 解析文本,再调用 Addr.IsLinkLocalUnicast。本文用 IPv4、IPv6 和带 zone 的 IPv6 示例说明返回值,并区分私有、回环、组播和无效地址。443 收藏 -
Go regexp.Expand 使用匹配索引从原文取出捕获组,并按模板追加到字节切片。本文通过资源标签示例说明变量边界、返回值、缺失组和批量展开的注意事项。443 收藏 -
说明 Go archive/zip.FileHeader.SetModTime 的使用方式、UTC 转换、MS-DOS 时间精度和 Modified 字段迁移边界。443 收藏