Go语言技术文章
-
用一个可复现的 CSV 导入故障,讲清 encoding/csv 的 FieldsPerRecord、ErrFieldCount、ParseError 和 FieldPos 如何配合定位最后一行字段数不一致。443 收藏 -
gopls 0.23 移除了 fix、inspect 和 bug 子命令。本文按实际迁移边界说明 codeaction、remote、serve 的职责变化,并处理 importsSource 与 analyzer 配置兼容问题。443 收藏 -
Go 泛型约束允许某些类型,不代表一次调用可以让不同实参各自选择类型。本文从类型推断、无类型常量和可赋值规则入手,定位接口约束通过但调用仍类型不匹配的原因。443 收藏 -
Go 中通常把 sync.Mutex 作为值字段嵌入结构体,再用指针接收者编写方法。本文解释值接收者为何会复制锁,以及何时才适合使用 *sync.Mutex。443 收藏 -
Golang · Go教程 | 3天前 | 标准库 · 定时器 · Go教程 · Go time.Timer Timer.Reset Timer.Stop 定时器复用 asynctimerchan 旧事件
Go 1.23 默认 timer channel 已不会让 Reset 后读到旧事件,但旧版本或 asynctimerchan=1 仍需 Stop、排空 t.C 再 Reset。本文按版本、接收状态和 AfterFunc 边界给出可复用写法。443 收藏 -
Go 自动化任务常常不是启动后一直跑到底:触发端取消、排队中的任务和已经开始的 worker 都要收到同一个 context 信号。本文用一个小型任务流水线说明 Done、Err、cancel 与 Wait 的职责边界。442 收藏 -
Go 的 os.File.Sync 用来把当前文件内容提交到稳定存储,但它不是 Close 的替代品。本文用同一段程序验证 Write、Sync、Close 的职责边界,并给出错误处理和落盘场景的判断方法。442 收藏 -
Go 的 html/template.URLQueryEscaper 适合把模板参数放进 URL 查询值,但它不是多值参数构造器。本文对照空格、加号、& 和 url.Values.Encode 的输出,给出可复核的写法与边界。441 收藏 -
Go 泛型约束中的 int 只匹配精确的 int 类型,~int 才会接纳底层类型为 int 的命名类型。本文用最小代码和类型集合说明两者差异。441 收藏 -
用 Go 的 multipart.Reader 逐个接收多个上传文件,配合 MaxBytesReader 和 LimitReader 控制请求总量、单文件大小,并正确处理 EOF、超限和临时文件清理。441 收藏 -
iter.Seq2 的 K、V 是按值传给 yield 的,不能靠取 range 变量地址消除复制。本文对比指针返回、ID 句柄和保留值返回,给出生命周期、并发与提前停止的实用边界。441 收藏 -
复用 bytes.Buffer 时,旧数据残留通常是因为写入会追加而不是覆盖。本文用 Len、Cap、Reset 和 Grow 拆开逻辑长度、底层容量与切片别名,给出循环复用、容量阈值和返回值复制的处理方式。441 收藏 -
Golang · Go问答 | 1星期前 | Context · 并发控制 · Go问答 · Go 资源清理 sync.Once context.WithCancel context.CancelFunc
Go 的 CancelFunc 可以被多个 goroutine 重复调用,但这不代表文件、连接和事务清理也天然幂等。本文用统一停止入口、等待工作退出和 sync.Once 设计多入口收尾,说明取消信号与资源释放的边界。441 收藏 -
讲清 Go sync.WaitGroup 的计数快照、Add 与 Wait 的竞态边界,以及动态派生任务和 WaitGroup.Go 的安全用法。441 收藏 -
Go 定时任务最容易被忽略的问题不是如何按时触发,而是上一次还没结束时下一次又开始。本文用 context、超时和退出确认设计一个不会重叠执行的任务循环,并说明失败、取消和告警怎么收口。440 收藏