Go语言技术文章
-
用 time.ParseDuration 解析带小数、负号和多个单位的时长,区分语法错误与 Duration 溢出,并给出可复用的校验写法。358 收藏 -
用独立 FlagSet 对比 ContinueOnError、ExitOnError 与 PanicOnError,演示如何让命令行错误可测试、可记录并保留稳定输出。358 收藏 -
Go 接口不等于 nil 时,问题通常不是 nil 比较失效,而是接口仍携带动态类型。本文用 typed nil、error 返回和类型断言示例,说明如何定位调用失败并修正返回边界。358 收藏 -
用 Go 的 go build -ldflags -X 在编译时注入版本号、Git 提交号和构建时间,并说明 buildvcs 元数据的读取边界。358 收藏 -
Go 没有 panicreturn 关键字,常见写法是用 defer 和 recover 捕获包内 panic,再改写命名返回值中的 error。本文用原创代码说明恢复边界、显式 return 和常见排查点。358 收藏 -
Go archive/zip 中 FileHeader.Method 不是任意压缩等级。本文解释 Store、Deflate、ErrAlgorithm、CreateHeader 与 CreateRaw 的边界,并给出写入错误、Close 收尾和读回校验的排查方法。358 收藏 -
围绕 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 compress/flate 复用解压器时,Reset 会清理内部状态但不会清空调用方的输入和输出缓冲。本文用代码和边界清单定位上一段数据残留、输入游标错位、Close 缺失与字典不匹配。358 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 收成新切片,但空序列返回 nil,消费过程也只发生一次。本文用过滤、提前停止和容量检查说明它的语义边界与使用方式。357 收藏 -
runtime/metrics 适合读取 Go 运行时定义的指标,expvar 适合发布应用自己维护的公开变量。本文用采样、名称兼容和版本边界说明两者怎么选。357 收藏 -
go mod vendor 后构建仍访问 module cache?从 GOMOD、GOWORK、GOFLAGS、vendor/modules.txt 和 -mod 模式逐层定位。357 收藏 -
Go fuzz corpus 报格式错误时,先定位 testdata/fuzz 中的具体文件,再核对 go test fuzz v1、参数数量、类型与顺序,最后用单条语料完成最小复现。357 收藏