Go语言技术文章
-
Go encoding/xml 解析重复的同名节点时用切片接收,遇到多层 XML 则用结构体嵌套或 a>b 标签路径表达层级。本文用一个订单 XML 说明标签映射、列表顺序、未知节点和最小验证。343 收藏 -
Go TLS 客户端使用 x509.NewCertPool 和 AppendCertsFromPEM 从内存加载自定义 CA,并通过 tls.Config.RootCAs 只按指定证书池验证服务器。343 收藏 -
Go net/url 的 Opaque URL 不把主体数据放在 Path 或 Host,而是放进 URL.Opaque。本文区分 scheme:opaque 与层级 URL,并说明 String、URL.RequestURI 和服务端 RequestURI 分别该在什么场景读取。343 收藏 -
go test -race 出错时,先确认是运行时竞态、普通测试失败还是平台不支持,再沿着 Read by、Previous write 和 goroutine 创建栈定位共享状态,修复后用 -count=1 复查。343 收藏 -
Go 的 math/big.Rat.SetString 会把合法十进制解析为精确有理数,但显示精度与内部精度不是一回事。本文用 RatString、Denom、FloatPrec 和 FloatString 分清四种检查方式。343 收藏 -
围绕 Go testing.T Cleanup 讲清后注册先执行的规则,示范如何按资源依赖登记清理函数、隔离子测试资源并处理清理错误。343 收藏 -
Golang · Go问答 | 2星期前 | Go问答 · Go fmt.Fscan剩余换行 Go读取换行分隔输入 fmt.Fscan与ReadString Go空行处理 bufio.Reader整行读取
解释 Go fmt.Fscan 将换行视为空白分隔符时的边界行为,给出切换到 ReadString、Fscanln 和整行解析的实用方案。343 收藏 -
Golang · Go教程 | 2个月前 | 错误处理 · Context · 并发控制 · Go教程 · 并发控制 Go教程 context取消 context.WithCancelCause context.Cause
context.WithCancelCause 适合在请求链路中保留明确取消原因,让子任务不只知道 context canceled,还能知道是权限拒绝、上游失败还是主动终止。落地时要区分系统取消和业务错误。342 收藏 -
Go 项目里用 sync.Pool 降低临时对象分配时,如果对象归还前没有清理字段,下一次 Get 可能拿到带旧状态的对象,表现为用户数据串到别的请求、切片内容残留或缓存字段异常。稳妥做法是使用后先 Reset,再 Put;Get 后只做必要初始化,并且不要把仍在使用的对象提前放回池里。342 收藏 -
用 Go 的 io.SectionReader 读取文件片段时,EOF 到底代表成功还是数据不足?本文从偏移量、剩余长度和 ReadAt 行为入手,给出一段可复查的判断代码。342 收藏 -
time.After 放进长循环后,真正需要区分的是 Go 版本的回收语义、是否要提前取消,以及是否能复用计时器。本文用可运行示例拆开三种情况,给出 Stop、Reset 和上下文取消的安全边界。342 收藏 -
Go 1.22 起 ServeMux 支持方法和通配符,重叠路由按更具体的模式优先;只有双方都不更具体时才冲突并在注册时触发 panic。本文用真实模式拆解方法、路径、主机和注册顺序的边界。342 收藏 -
Go 的 csv.Reader 把 FieldsPerRecord 设为负数后,不再检查每条记录的字段数量,适合列数可变的 CSV;本文同时说明它与正数、0 的区别,以及如何在业务层安全处理变长记录。342 收藏 -
Go 1.20 起 fmt.Errorf 支持多个 %w,可把多个底层错误保留为可遍历分支。本文对比单错误链、多错误包装与 errors.Join 的边界,并给出 errors.Is、errors.As、go.mod 和 CI 的迁移检查清单。342 收藏 -
本地 go.mod replace 能编译,不代表 CI checkout 后也能找到同一个目录。本文从路径相对位置、替换模块的 go.mod、require 生效条件和 CI 工作区布局四处排查,给出可复现的检查命令与修复选择。342 收藏