Go语言技术文章
-
Go context deadline 到期不会强制杀掉后台 goroutine。本文用 Done、Err、可取消阻塞点和 WaitGroup 拆解不退出原因,并给出安全的协作式退出写法。368 收藏 -
Golang · Go问答 | 2星期前 | 依赖管理 · go · module · go mod download Go module retract Go 模块撤回 Go 依赖版本缓存 go list -retracted
Go module 的 retract 只改变自动版本选择,不会把已发布版本从代理或本地缓存抹掉。本文用 go list、go mod download 和 GOMODCACHE 排查撤回版本仍能下载的原因,并给出升级、保留和清理三种处理边界。368 收藏 -
Go 中发起 Docker 的 POST 拉取镜像请求时,若直接用 json.NewDecoder.Decode() 仅读取一次,会提前终止连接,导致镜像拉取不完整;需循环解码流式响应体,直到 EOF 或错误发生。 Go 中发起 Docker 的 POST 拉取镜像请求时,若直接用 `json.Ne367 收藏 -
encoding/csv.Reader 遇到列数不固定的 CSV 时,应把 FieldsPerRecord 设为负数关闭列数校验,再在业务层按字段长度和列名做校验。本文比较 0、正数和负数三种设置,给出可复现的读取与验收方法。367 收藏 -
go/token 把源文件位置压缩成 Pos,真正输出错误时还要经过 FileSet.PositionFor。本文用多文件和 //line 场景说明 adjusted、文件偏移与诊断文本如何对应,并给出可复现的核对方式。367 收藏 -
context.WithCancel 的 cancel 不只是结束信号,也负责解除父子 context 关联。本文用 Go 代码说明不调用 cancel 时的泄漏边界、正确写法和排查清单。367 收藏 -
用 Go 的 httptest.ResponseRecorder 测试 Handler 输出,分别检查状态码、响应头和响应体,并解释 Result、Code 与 HeaderMap 的使用边界。367 收藏 -
通过实现 json.Marshaler,让 Go 枚举在 JSON 中输出可读文本,并对未知整数返回明确错误。367 收藏 -
Go 的 sync.RWMutex 会让已持有的读者先完成,写者等待后阻止新的读者进入,从而避免写操作长期饥饿。367 收藏 -
Go 中 bufio.Writer.Write 成功并不代表底层资源已经写入,Flush 才会把缓冲内容交给文件、网络或自定义 io.Writer。本文说明 Flush 报错的原因、Write 与 Flush 的边界,以及文件、重试和 Sync 的处理清单。367 收藏 -
Go 模板调用自定义函数时,FuncMap 必须先于 Parse 注册。本文用最小示例解释解析期名称检查、执行期函数替换和常见排错边界。367 收藏 -
Go 的 bufio.Reader.Peek 只观察并不推进读取位置。本文用固定协议头示例说明如何先判断、再精确消费,处理 ErrBufferFull、短输入和预览切片生命周期,避免头部丢失或重复读取。367 收藏 -
Go 1.21 起,主模块 go.mod 的 go 行不能低于依赖模块的 go 行。本文区分自动工具链切换、直接失败与依赖回退,给出 go.mod、GOTOOLCHAIN 和 go.work 的排查与修复清单。367 收藏 -
Go测试需要临时文件时,直接使用testing.T.TempDir创建测试专属目录,测试及子测试结束后自动清理。本文给出文件读写、子测试隔离、GOTMPDIR与资源关闭的实用边界。367 收藏 -
用 Go log/slog 的 slog.Group 和 Logger.WithGroup 把请求、订单等字段放进稳定命名空间,并理解 TextHandler 与 JSONHandler 的输出差异。367 收藏