Go语言技术文章
-
Go 的 time.Ticker 退出时不能只停业务循环,还要明确 Stop、ticker.C 和消费协程的生命周期。本文用一个可复用的退出模式说明如何停止 ticker、等待 goroutine 并避免通道误用。132 收藏 -
Go strings.FieldsSeq 在 Go 1.24 中提供按需遍历空白分隔字段的方式,结果是 iter.Seq[string],不必先创建完整的 []string。本文说明它与 strings.Fields 的边界、提前停止写法和旧版本兼容策略。132 收藏 -
Go 1.27 的实验性 SIMD API 分成可移植的 simd 与架构相关的 simd/archsimd。本文结合 Float32s、Float32x4、ToArch 和 FromArch,说明两层 API 的能力边界、构建开关、转换方式和公共接口风险。132 收藏 -
Go 的工具链版本不能直接按普通字符串比较。本文用 go/version.Compare 判断 go1.27、go1.27rc1 和 go1.27.0 的先后,并说明 go 前缀、非法输入、Lang 归一化和最低版本检查的边界。132 收藏 -
Go benchmark 第一次结果偏慢时,先区分测试框架的首轮校准、被测函数的 lazy init 和环境噪声,再决定是否预热。本文用 b.Loop、StopTimer、ResetTimer 以及 -benchtime、-count 组合,建立可解释的 cold path 与 warm path 测量方式。132 收藏 -
JSON Patch 的 test 是前置条件检查,不是数据库事务。本文说明 test 失败时为什么应丢弃 Apply 结果、保留原文档,并用事务或乐观锁把检查、变更和持久化收口为一次可提交的更新。132 收藏 -
Go defer 属于所在函数,循环结束不会触发延迟关闭。本文以批量文件读取解释资源积累原因,给出单文件助手函数与错误合并写法,并说明作用域、闭包和退出方式的区别。132 收藏 -
Go os.File.WriteString 适合把字符串直接写入文件,但仍要检查返回的字节数和错误。本文从打开模式、资源关闭、短写判断和 io.WriteString 的通用写法说明如何安全处理文本写入。132 收藏 -
Go 自定义 UnmarshalJSON 时,使用不带方法集的类型别名避免递归调用,再通过辅助结构承接原始字段并区分语法、类型、缺失和业务校验错误。132 收藏 -
Golang · Go教程 | 17小时前 | 依赖管理 · Go教程 · 工程实践 · Go vendor 离线构建 Go Modules go mod vendor modules.txt 依赖一致性
本文围绕 go mod vendor 说明如何把 go.mod、go.sum、vendor/modules.txt 与 vendor 目录组成可提交的依赖快照,再用 -mod=vendor、GOPROXY=off 和 GOSUMDB=off 让构建与测试在无网络环境中读取同一套依赖,并整理清单漂移时的修复边界。132 收藏 -
Go 的 filepath.Clean 可以按当前操作系统规则清理重复分隔符,但它同时会处理 .、..、空路径和分隔符风格。本文用边界示例说明清理结果、适用位置和性能测量口径。131 收藏 -
Go os.DirFS把目录映射为fs.FS,适合把资源读取代码与宿主路径解耦。本文从一次实际封装体验出发,给出有界读取示例,并比较DirFS与Root.FS的适用边界。131 收藏 -
Go 的 csv.Reader 遇到不规范引号时,可以在明确的兼容入口启用 LazyQuotes,但它不是数据清洗开关。本文说明严格模式、ParseError 定位、兼容读取和字段数检查之间的边界。131 收藏 -
Go 使用 crypto/x509.SystemCertPool 读取系统根证书时,Subjects 为空不一定代表没有可用根证书。本文按平台验证 API、磁盘 CA bundle、容器环境和自定义 PEM 的边界,给出稳妥的判断方式。131 收藏 -
Golang · Go教程 | 21小时前 | 标准库 · 错误处理 · 文件上传 · HTTP服务 · Go教程 · Go MaxBytesReader io.CopyN 上传大小限制 HTTP请求体
在 Go HTTP 上传中,io.CopyN 只能限制本次读取量,不能单独判断请求是否超限。本文用上限加一字节的读取策略,结合 written 和 err 区分短文件、刚好达标、超限与 I/O 错误,并用临时文件避免半成品落盘。131 收藏