Go语言技术文章
-
Go channel 的关闭责任应交给决定“不再发送”的生产者:单生产者完成发送后直接关闭,多生产者等待全部退出后由协调者只关闭一次。本文结合 context、WaitGroup 和 range,说明如何避免重复关闭、向已关闭 channel 发送以及 goroutine 泄漏。288 收藏 -
围绕 Go net/url 的 URL.AppendBinary,说明如何把 URL 序列化结果追加到已有 []byte,如何复用切片容量并处理错误,以及它与 String、EscapedPath 和 MarshalBinary 的调用边界。287 收藏 -
纯 Go DNS 解析器遇到搜索域结果差异时,先在同一环境比较短名、完整名称和尾点绝对名称,再检查 search、ndots 与实际解析器。提供有限超时的 Go 对照程序,说明候选顺序、配置修复及内部名称安全边界。287 收藏 -
使用 go-geom 构造带孔多边形,说明 Polygon 外环与内环的顺序、SetCoords 与 Push 的用法,以及坐标闭合、布局一致和面积读取等常见边界。287 收藏 -
filepath.WalkDir 不会替业务自动定义目录边界。本文从根路径检查、回调错误、DirEntry 类型判断和 SkipDir 语义入手,说明怎样写出可控的目录遍历入口,并补充符号链接、操作系统分隔符和文件根节点等边界。287 收藏 -
通过请求级 ClientTrace 记录 103 Early Hints,区分信息响应与最终 Body,说明回调绑定、并发计数、错误返回的影响,以及停用观测与日志排查的方法。287 收藏 -
用一个小型 Go 命令行项目演示 io.MultiWriter 如何把同一份写入分发到 bytes.Buffer 和 os.File,重点说明目标顺序、错误停止、文件关闭与可复用封装。287 收藏 -
从 go-toml v1 的 Tree/Get 读取迁移到 go-toml/v2 结构体解码,关键不是机械替换函数,而是重写模块路径、字段映射和动态配置边界。本文用最小改造示例说明 Unmarshal、Decoder、严格字段与 DecodeError 的取舍。286 收藏 -
Golang · Go问答 | 3星期前 | HTTP · go · Get · Post · 故障排查 · net/http · Microsoft Visual Studio cnwizards(c++程序开发包) net/http HTTP重定向 CheckRedirect Go Redirect POST变GET
Go Client 自动跟随重定向时,301、302、303 会让 POST 后续变成 GET,而 307、308 保留原方法和请求体。本文用服务端与 CheckRedirect 示例说明状态码选择、请求体重放和停止自动跟随的排查方法。286 收藏 -
Go io.WriteString 可以把字符串写入任意 io.Writer,并在目标实现 StringWriter 时直接走字符串写入方法。本文用迁移示例说明调用分派、n 与 error 的处理以及文件、缓冲区和 HTTP 响应的使用边界。286 收藏 -
pflag 中不能通过比较当前值和默认值判断用户是否传参,因为用户可能显式传入了与默认值相同的值。本文说明 Changed、Visit 与 NoOptDefVal 的使用边界。286 收藏 -
使用 Go os.DirFS 读取目录时,先用 fs.ValidPath 判断输入是否满足 io/fs 名称规则,再根据目录是否可信选择 os.DirFS 或 Go 1.24+ 的 os.OpenRoot。本文区分语法边界与符号链接安全边界,并给出选择表和可运行示例。286 收藏 -
go test -shuffle 暴露出结果不稳定时,先保存随机种子,再区分共享状态、并行调度和测试缓存。本文用固定种子复现问题,并给出修复后的回归命令。286 收藏 -
Go os.File.ReadAt 只负责按偏移读取,不会替你关闭文件。本文从打开点、defer Close、ReadAt 返回值和并发路径四处排查资源未释放。286 收藏 -
Go 用 os.Rename 替换同目录普通文件时,应先把数据写入临时文件,再关闭并将临时路径改名为目标路径。本文说明实现方式、失败清理和跨平台边界。285 收藏