Go语言技术文章
-
解释 Go time.AfterFunc 的回调与 Timer.Stop 同时发生时如何判断返回值,并用 done 或 WaitGroup 协调回调完成与资源清理。148 收藏 -
Go io.Pipe 的写端提前失败时,普通 Close 会让读端只看到 EOF。本文按读写两端的职责解释 CloseWithError、n 与 err 的处理方式,以及关闭顺序和 ErrClosedPipe 的边界。148 收藏 -
go mod graph 用模块 requirement 边展示依赖来源,go list -m all 用来观察最终构建列表。本文按排查顺序说明如何定位上游、理解版本差异,并处理 replace、exclude 与 Go 版本语义。148 收藏 -
Go 的 unicode.IsSpace 按 Unicode White Space 属性判断 rune。本文用配置文本说明它与 ASCII 空格、strings.Fields、strings.TrimFunc 的区别,以及清理键值行时的边界。148 收藏 -
Go Transport 请求后连接池立即变空,通常不是连接池失效,而是连接仍在使用、响应体未读完或关闭、Keep-Alive 被禁用、空闲超时过短,或者 Transport 被重复创建。本文按状态、代码和配置边界给出排查顺序。148 收藏 -
Go imports.Process 可为源码片段整理和补全导入。本文给出 Fragment 模式的声明片段处理函数,说明 FormatOnly、filename 位置语境,以及失败时保留原文的方式。148 收藏 -
Go os.OpenFile 的 perm 是创建文件时的请求权限,最终结果还会受到系统 umask 影响;已有文件则不会因为再次传入 perm 自动改权限。本文用创建、覆盖和显式 Chmod 三个场景说明正确写法。148 收藏 -
Golang · Go教程 | 1天前 | 网络编程 · 标准库 · HTTP · Go教程 · Go 响应头 net/http http.Header Header.Get Header.Values
Go 的 http.Header 底层是 map[string][]string。需要读取同名响应头的全部值时使用 Header.Values,只关心首个值才使用 Header.Get,并注意缺失值、大小写与返回切片的边界。148 收藏 -
Golang · Go问答 | 2个月前 | 工具链 · go语言 · Go教程 · 版本升级 · 代码重构 · Go 1.26 go fix modernizer 代码升级 new 表达式 Go 代码迁移
Go 1.26 重写了 go fix,把它从旧式修复命令变成基于 go/analysis 的 modernizer 工具。本文用一个含有可选字段和自定义 newInt 函数的 Go 模块,演示如何预览建议、限定改动范围、检查 go.mod 版本并完成回归。147 收藏 -
用 log/slog 给请求日志补 request_id 时,WithAttrs 适合固定上下文,Handler 包装适合动态注入。本文用一段可运行示例说明两者的边界、并发安全和验收方法。147 收藏 -
Go regexp 的 FindAllString 适合一次拿到全部匹配,但重复匹配、空匹配和 n 参数经常让结果数量出乎意料。本文用可运行示例拆解扫描游标与边界,并给出限制匹配次数的可靠写法。147 收藏 -
Go 的 os.Getenv 无法区分环境变量未设置和显式空值,本文用 os.LookupEnv 保留 exists 状态,并给出默认值、校验和测试的处理方式。147 收藏 -
Go http.Client 默认最多连续跟随 10 次重定向。本文用 CheckRedirect 和 len(via) 设置业务上限,并比较返回错误与保留最后一次 3xx 响应两种处理方式。147 收藏 -
用 Go encoding/xml 的 ,attr 标签把 XML 属性映射到结构体,说明指针空值、any,attr 扩展属性、嵌套节点和 Marshal 双向验收边界。147 收藏 -
讲清 Go hash.Hash 复用时 Reset、Write、Sum 的状态边界,用一个串行摘要计算器避免上一条输入串入下一条结果。147 收藏