Go语言技术文章
-
time.LoadLocation 读取的是 IANA 时区数据库,不是简单的小时偏移。本文说明 ZONEINFO、系统时区目录、GOROOT 与 time/tzdata 的关系,并给出精简容器中的错误处理和部署选择。263 收藏 -
Go 的 log.Fatal 会先输出日志,再调用 os.Exit(1)。os.Exit 立即结束进程,不执行当前调用链中的 defer,因此清理逻辑会被跳过。本文拆开调用关系,并给出把错误返回到 main、让资源先完成 defer 的写法。263 收藏 -
解释 Go database/sql 中 Rows.Next 返回 false 的两种原因,给出 Rows.Err 的标准收口写法,并覆盖 Scan、上下文取消、Close 与多结果集的错误边界。263 收藏 -
使用 Kong MapperFunc 和 TypeMapper 注册自定义区间参数,介绍 Scanner 取值、反射赋值、NamedMapper 与字段级绑定,并说明错误处理及语法兼容。263 收藏 -
Go Paho MQTT Go 的 OnConnectHandler 会在首次连接和自动重连后调用。本文把业务订阅集中到一个恢复函数中,说明 SubscribeMultiple、CleanSession、ResumeSubs 和异步 token 的边界,避免重连后消息悄悄中断。263 收藏 -
Go HTTP 客户端拿到响应后如果没有关闭 Response.Body,连接可能无法按预期复用,连续请求时会出现等待、变慢甚至连接资源耗尽。本文按请求体生命周期、连接复用和并发封装给出排查与修复方法。263 收藏 -
介绍Go strconv.Quote生成可复制字符串字面量的写法,通过特殊字符与Unquote示例区分值和展示层,补充ASCII输出、缓冲追加及目标语法边界。263 收藏 -
xml.Decoder.Token 匹配不上 XML 元素,通常不是前缀写错,而是把前缀当成了命名空间值。本文用 Go 代码说明如何按 Space 与 Local 正确匹配,并在批量解析中减少格式化和无意义复制。263 收藏 -
Go gzip.Writer 的 Name、ModTime、Comment 等字段会写入 gzip 文件头,但必须在第一次 Write、Flush 或 Close 之前设置。本文给出最小写法,并说明复用 Writer、读回元数据和字段边界。262 收藏 -
用 go test -cover 建立按包基线,再用 coverprofile 与 go tool cover 定位函数盲区,并区分默认包内统计和 -coverpkg 跨包统计。262 收藏 -
Go 使用 slices.Delete 原地删除切片区间,并在 Go 1.22 及以后清空废弃尾部的元素引用。本文说明半开区间、返回长度、别名共享、批量删除和需要保留输入时的复制边界。262 收藏 -
Go 无缓冲通道发送和接收必须同时就绪。若同一个 goroutine 先发送再接收,或接收方提前退出,发送与接收就可能一起等待。本文按现场信号区分正常同步、双端阻塞、nil 通道和关闭通道,并给出可退出的修复方式。262 收藏 -
Go 使用 go:embed 报 pattern no matching files 时,重点检查声明文件所在包目录、模式拼写、模块边界和构建标签,而不是运行时工作目录。本文给出一套能定位到具体文件的排查方法。262 收藏 -
Go errors.Join 遍历需同时识别两种 Unwrap 接口,区分包装节点与叶原因;示例加入调用、深度额度,并说明截断记录和不可信方法边界。262 收藏 -
Go 使用 utf8.RuneCountInString 统计 rune,而 len 返回字节数。本文通过中文、emoji 和组合字符说明差异,提供带字节上限、UTF-8 判断及 rune 上限的入口处理示例。262 收藏