Go教程技术文章
-
围绕 Go io/fs 讲清文件不存在、权限错误、非法路径和目录遍历失败的判断顺序,给出 errors.Is、errors.As、ReadFile 与 WalkDir 的可复用处理方式。358 收藏 -
Go net/url 拼接路径时如何避免双斜杠?本文说明 URL.JoinPath、PathEscape、ResolveReference 的边界,并给出 Go 1.19+ 与旧版本的安全处理方案。358 收藏 -
用 Go unsafe.Slice 把数组建立为共享存储的切片视图,说明空数组、长度边界、对象存活和 uintptr 暂存的风险,以及生产发布前的检查清单。358 收藏 -
Go archive/zip 处理上传压缩包时,不要用 io.ReadAll 一次性读取解压内容。本文用 File.Open、UncompressedSize64、io.CopyN 和额外字节探测,说明如何逐项读取、限制单文件大小,并补上路径与归档总量边界。358 收藏 -
Go 的 x509.CertPool.AddCert 可以把已解析的自签名或内部 CA 证书加入信任池。本文从 PEM 解析、系统根池组合和 tls.Config.RootCAs 三个连接点说明正确用法,并区分未知 CA、主机名不匹配与证书过期等常见错误。358 收藏 -
Go encoding/binary 解析二进制字段时,固定字节序、字段宽度和偏移必须同时对应协议。本文用小端序头部示例说明如何区分短输入、偏移错误、字节序不匹配与合法零值。358 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 收成新切片,但空序列返回 nil,消费过程也只发生一次。本文用过滤、提前停止和容量检查说明它的语义边界与使用方式。357 收藏 -
Expr 的 Env 不是运行时数据容器,而是表达式编译时的输入声明。本文用结构体环境拆解 Compile 与 Run 的职责边界,说明字段、类型和运行值不一致时如何定位,并给出可复用的错误处理写法。357 收藏 -
用 Gonum interp.PiecewiseLinear 接收严格递增的 X/Y 样本,调用 Fit 拟合分段线性插值器,再用 Predict 查询样本区间内的中间值,并说明区间外结果与其他插值器的选择边界。357 收藏 -
Golang · Go教程 | 1星期前 | JSON · 错误处理 · 数据校验 · Go教程 · Go 嵌套错误 JSONSchema JSON Schema ValidationError 校验错误 JSON Pointer
Go jsonschema/v5 校验失败时,ValidationError 会用 Causes 保留嵌套原因,并提供实例路径、关键字路径和错误消息。本文用递归展开器把错误树整理成前端和日志可直接消费的字段错误列表,同时说明 DetailedOutput、BasicOutput、数组索引和组合关键字的处理方式。357 收藏 -
Go 1.24 为 testing.T 增加 Context 方法。本文用可运行示例说明测试上下文何时取消、如何配合 Cleanup 管理资源,以及并发子测试中的边界。356 收藏 -
Go 的 crypto/rand 适合生成短期一次性令牌,但随机字节数、URL 安全编码和过期校验必须一起设计。本文用一个短期下载令牌示例说明熵预算、存储字段、校验顺序和常见误区。356 收藏 -
Go 1.27 起,go test 默认启用 stdversion vet 检查,用来发现源文件使用了高于项目语言版本的标准库符号。本文从诊断输出、单独复查到修复判断,说明怎样读懂 stdversion 结果。356 收藏 -
Go netlink 发送只读查询消息时,重点是正确组合 family、消息类型和 Request、Dump 标志。本文用 mdlayher/netlink 说明 Dial、Message、Execute、分段回复与权限边界。356 收藏 -
time.Ticker.Stop 之后是否还能从 C 通道读到一次事件,取决于 Go 版本、go.mod 语义和退出代码的写法。本文用一个定时刷新任务拆解 Stop 不关闭通道、select 退出、Go 1.23 同步 ticker 通道以及旧版本兼容边界。355 收藏