Go教程技术文章
-
Go 1.23 的 slices.Chunk 可以把切片按批次遍历。本文比较手写下标循环、slices.Chunk 与复制切分的适用边界,重点说明子切片共享底层数组、容量被裁剪以及 n 参数的校验方式。418 收藏 -
用 Go 的 net/netip 解析 CIDR 配置并校验客户端地址,重点看 Prefix.Contains 的地址族边界、ParsePrefix 错误处理与 PrefixFrom 的掩码差异。250 收藏 -
Go 的 ServeMux 已经能按方法、主机和路径匹配请求,Request.Pattern 可以把最终命中的模式带进日志。本文用一个最小路由示例比较精确路径、通配符和方法匹配,并说明空 Pattern 的边界。452 收藏 -
用 filepath.WalkDir 编写一个目录清单工具,展示如何通过 DirEntry 判断目录并返回 SkipDir 剪枝,避免遍历缓存、构建产物等无关目录。158 收藏 -
Go 中把 range 变量直接交给 goroutine 闭包,常会让多个异步任务读到同一个值。本文用可复现代码拆开捕获时机、参数传递和验收方法,给出适合生产代码的修复边界。273 收藏 -
Go 服务收到请求取消后,如何让审计写入、指标上报等短收尾任务继续完成?用 context.WithoutCancel 保留值但切断取消信号,并补上独立超时。311 收藏 -
Go 中复用 time.Timer 时,Reset 之前必须先处理可能残留的通道信号;否则循环可能立刻走旧分支。本文用一个可运行的轮询例子说明 Stop、<-timer.C、Reset 和 ctx.Done 的边界。175 收藏 -
Go 1.24 用 go:wasmexport 把 Go 函数暴露给 WebAssembly 宿主。本文从 WASI reactor 和宿主调用实验入手,核对导出顺序、参数类型和初始化边界。425 收藏 -
Go 的 io.Copy 会优先尝试 WriterTo 和 ReaderFrom 快路径。本文用可复现的接口实现拆开选择顺序,并说明何时回退到缓冲复制。138 收藏 -
Go 中 os.Rename 在同一文件系统里适合做临时文件提交,但跨文件系统时可能返回 invalid cross-device link。本文从错误现场出发,写出可检查、可回退、不会把半成品当正式文件的保存流程。154 收藏 -
用 bytes.Clone 复制 []byte 时,重点不是语法,而是确认结果与原切片不共享可写元素,并验证空输入的 nil 边界。406 收藏 -
reflect.VisibleFields 可以按 Go 的字段可见性规则枚举结构体字段,连同嵌入字段也能得到稳定的 Index 路径。本文用一个审计结构体示例说明如何读取字段、区分匿名字段和未导出字段,并处理重名与空结果边界。391 收藏 -
Go 的 unicode/utf8.RuneStart 只能判断字节是否可能位于一个 UTF-8 字符的起点,不能单独完成合法性校验。本文用切片扫描、DecodeRune 和 Valid 的组合处理截断与非法序列。368 收藏 -
用 Go archive/zip 把本地文件复制成 ZIP 条目,拆解 FileInfoHeader、CreateHeader、io.Copy 与 Writer.Close 的执行顺序,并说明 CRC 校验和关闭阶段错误为什么不能忽略。188 收藏 -
用一个可运行的 net/http 示例说明 HandlerFunc 如何把普通函数接入 ServeMux,再用中间件包装请求日志与响应头,厘清组合顺序、闭包捕获和错误边界。387 收藏