Go教程技术文章
-
用 Go 的 sync/atomic.Value 保存同一具体类型的只读配置快照,写入方复制后整体替换,读者通过 Load 无锁读取,并避开共享 map、类型漂移和并发写入等常见坑。435 收藏 -
Go 定时任务最容易被忽略的问题不是如何触发,而是上一次任务变慢后如何避免下一轮重入。本文比较 Ticker、单次触发和带状态的调度写法,并给出可验证的选型边界。434 收藏 -
Go 正则表达式可以用 (?P...) 声明命名捕获组,再通过 FindStringSubmatch 和 SubexpIndex 按字段名读取结果。本文说明数字分组的错位风险、命名分组写法,以及 nil、空分组和名称不存在时的处理方式。 434 收藏 -
Go 的 encoding/csv 支持把引号字段中的换行保留为同一条记录。本文说明正确的 CSV 写法、csv.Reader 的读取方式、字段数配置,以及如何用 ParseError、FieldPos 和 InputOffset 定位坏数据。434 收藏 -
用 Go regexp 的命名捕获组解析日志字段,按 SubexpNames 建立索引映射到结构体,并处理匹配失败、空组和重复组名。434 收藏 -
用 Go 的 io.MultiReader 把多个 Reader 顺序拼成一个输入流,掌握 EOF、错误传播、分隔符和底层资源关闭的边界。434 收藏 -
用 Go net/textproto 读取原始 HTTP 风格请求头,掌握 ReadMIMEHeader、重复字段、续行、键名规范化和输入长度边界。434 收藏 -
自签名 CA 或内网证书接入 Go 客户端时,握手失败往往不是服务端证书坏了,而是根证书没有进入本次 Verify 使用的证书池。本文从系统根证书池、NewCertPool、AddCert 到 Verify 串起一条可运行的证书链校验路径。433 收藏 -
保存时用 goimports 自动整理当前 Go 文件,提交和 CI 再用 gofmt -l、goimports -l 做只读门禁。本文说明两者职责、保存脚本、检查命令、生成文件边界和常见失败原因。433 收藏 -
Go 的 csv.Reader 开启 ReuseRecord 后,Read 返回的记录可能共享底层数组。本文解释上一条记录被改写的原因,并给出即时处理、复制保存和 EOF 错误处理的安全写法。433 收藏 -
os.OpenFile 的 O_CREATE 只负责文件不存在时创建,不提供独占创建保证。并发生成同一文件时,应使用 O_CREATE|O_EXCL,并处理 os.ErrExist、部分写入和读取时机。433 收藏 -
Go http.Server 的优雅关闭超时不是 Server 的固定字段,而是传给 Shutdown 的 context 截止时间。本文用信号、5 秒预算和错误处理示例说明配置方式,以及 WebSocket 等劫持连接的边界。433 收藏 -
Go regexp 默认采用左侧优先匹配,调用 Longest 后会改为同一起点取更长结果。本文用最小示例比较两种策略,并说明 CompilePOSIX、子匹配和并发配置的边界。432 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 迭代器结果收集成新的切片。本文说明 slices.Values、自定义序列、nil 结果、深拷贝边界,以及已知长度时如何用预分配 append 控制容量。432 收藏 -
Golang · Go教程 | 1个月前 | 错误处理 · Go教程 · errors.Join · errors.Is · Go 1.20 · 错误包装 errors.Is errors.As Go errors.Join 多错误处理 Go 1.20
Go 1.20 的 errors.Join 可以把多条错误合并为一个错误值,同时保留 errors.Is 和 errors.As 的判断能力。本文用批量关闭资源、并行任务汇总等场景说明该怎么用,以及哪些时候不该把错误一股脑拼在一起。431 收藏