Go教程技术文章
-
Go 1.23 的 range-over-function 会把循环里的 break 转成迭代器可识别的停止信号。本文用 iter.Seq、Seq2 和 iter.Pull 说明 yield 返回 false、defer 清理与 stop() 的配合,解决惰性遍历提前结束时资源没有释放的问题。380 收藏 -
使用 Go 的 encoding/xml 解析重复出现的嵌套元素时,把匹配字段声明为切片即可逐项接收;再结合 XMLName、属性标签和命名空间 URI 约束结构,避免同名节点映射错位。380 收藏 -
围绕 Go io/fs.ValidPath 讲清虚拟文件路径的有效边界、Windows 字符处理、FS.Open 契约与测试分层。380 收藏 -
Go 的 sync 一次性初始化器适合把稳定结果封装成函数,但初始化失败也会被缓存。本文用配置加载和重试边界说明一次性函数、OnceFunc 与可重试初始化该怎么选。379 收藏 -
Go embed.FS 不只适合把模板打进二进制,也可以通过版本目录和启动校验降低模板发布风险。本文演示如何保留可回滚版本、验证文件完整性,并明确热切换不该越过的边界。379 收藏 -
Go 编译时出现 import cycle not allowed,通常不是某一行语法错,而是包依赖回到了起点。本文用 go list 和最小重构示例定位环路,说明如何拆出接口或共享类型,并用测试和依赖检查确认修复没有引入新问题。379 收藏 -
文件测试最容易留下脏现场:固定目录会互相覆盖,手写清理又常常漏掉失败分支。本文用 testing.TB.TempDir 完成隔离实验,核对目录生命周期、并发测试和清理顺序。379 收藏 -
用 big.Int 保存高位数金额,用 big.Rat 计算精确比例,再分别用 Cmp 做阈值比较、用 RatString 保留分数、用 FloatString 生成最终展示值。379 收藏 -
Go io.TeeReader 可以在下游继续读取原始上传流的同时,把已经读出的字节同步写给统计器。本文用一个保留 Close 的 ReadCloser 包装器记录实际流量,并说明同步写入、错误传播、提前停止和 Content-Length 的边界。379 收藏 -
Go 服务做配置热更新时,真正要解决的不是重新读取文件,而是让新旧版本切换可验证、失败可回滚。本文用原子替换、版本号校验和恢复指针搭出一条可落地的更新流水线。378 收藏 -
从 HTTP 请求、后台 goroutine 和数据库查询三个场景说明 context.WithCancel 返回的 cancel 为什么必须调用,给出 defer、父子上下文和取消后收尾的可验证写法。378 收藏 -
目录扫描从 os.ReadDir 改成 os.File.ReadDir(n) 后,读取阶段可以按批次控制内存,但全局排序需求不会自动消失。本文用一个目录索引任务拆开读取、排序、错误收口和验收门禁,给出可复用的 Go 实现与取舍方法。378 收藏 -
Go io.Pipe 适合把边生成的数据直接接到 HTTP 上传请求。本文用 multipart 示例说明读写两端、Close 与 CloseWithError、请求取消和 goroutine 收尾,并列出 Content-Length、重试与可重复读取的边界。378 收藏 -
Golang · Go教程 | 2个月前 | HTTP · 路由 · Go教程 · Go1.22 · ServeMux · HTTP路由 ServeMux Go教程 Go1.22 PathValue 路由迁移
Go 1.22 的 net/http ServeMux 支持方法匹配和路径通配符。本文从旧的前缀路由迁移到 GET /posts/{id},讲清 PathValue 取参、405 行为、静态路由优先级与冲突模式的测试方法。377 收藏 -
net/netip.Prefix.Overlaps 用来判断两个 CIDR 前缀是否包含共同 IP,但地址族、零值前缀、IPv4 映射 IPv6 和 /0 边界都会影响结果。本文用一段可运行的 Go 代码拆开这些判断。377 收藏