Go语言技术文章
-
Go 的 Write 返回成功不代表文件已经写出:使用 bufio.Writer 时,数据可能仍在缓冲区。本文用一个完整写文件函数说明 Flush、Close、路径和打开模式的排查顺序。116 收藏 -
Go 的 url.QueryUnescape 把加号解成空格是查询编码规则,不是字符串损坏。本文用对比例子说明查询参数、路径文本、QueryEscape 和错误处理应该如何配套使用。116 收藏 -
Go fuzz 失败后会把可复现输入写入 testdata/fuzz 目录。本文说明如何区分 seed corpus 与缓存语料,用 go test 精确重放、理解最小化输入,并把失败文件保留为回归测试。116 收藏 -
讲清 Go regexp.QuoteMeta 如何把用户输入转成字面匹配片段,并给出与固定正则组合、处理空输入和区分替换模板的实践方法。116 收藏 -
说明 Go net.Resolver 如何通过 LookupIP 的 ip4/ip6 和 DialContext 的 tcp4/tcp6 表达地址族偏好,区分 PreferGo、StrictErrors 与真正的 IPv4/IPv6 选择边界。116 收藏 -
用 Go testing/fstest.MapFS 在内存中构造文件树,让依赖 fs.FS 的读取逻辑脱离临时目录,并覆盖内容、目录和缺失文件测试。116 收藏 -
解释 Go bufio.Scanner 遇到 ErrFinalToken 时的停止条件,区分最后 token、nil token、Scan 返回值和 Scanner.Err。116 收藏 -
用 Koanf env/v2 将带应用前缀的环境变量映射成嵌套配置键,说明双下划线、允许键集合、值转换和覆盖顺序,并给出受限配置示例。116 收藏 -
Go httptrace 可以把 HTTP 客户端请求拆成 DNS、连接、TLS 和响应等阶段。本文围绕 DNSStart 与 DNSDone 写出一次请求的 DNS 耗时记录,并说明连接复用、DNS 失败和并发回调时的边界。116 收藏 -
Go html/template 用 define 注册布局、template 调用组件、block 提供默认区域。本文给出独立页面装配示例,说明克隆集合、数据传递、同名覆盖与空页面的排查方法。116 收藏 -
Go channel 的关键不是记住 close 语法,而是把关闭责任交给唯一知道最后一次发送已经完成的 owner。本文说明单生产者、多生产者汇聚、range 退出、重复关闭与取消信号的边界设计。116 收藏 -
Go 的 TCP KeepAlive 不是应用层心跳。本文从 TCPConn 的传统 API 讲到 Go 1.23 的 KeepAliveConfig,说明 Idle、Interval、Count 怎么设置,以及 Dialer、Listener 和跨平台使用时的边界。115 收藏 -
Go channel 关闭后仍能接收,是因为关闭且排空的 channel 会立即返回元素类型零值;带 ok 的接收可以区分真实发送值和关闭信号。本文用最小示例说明缓冲排空、ok 判断与常见误区。115 收藏 -
Go 的 url.Values 会把同名查询参数保存为字符串切片。本文用一个筛选标签示例说明 Query、Get、直接索引、Add、Set 和 Encode 的区别。115 收藏 -
Go image/draw 裁固定比例缩略图的关键,是先按目标比例计算源图裁切矩形,再用 draw.Draw 对齐源点复制到固定画布,而不是直接拉伸原图。本文给出中心裁切、尺寸限制和异常排查方法。115 收藏