Go语言技术文章
-
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 私有依赖出现校验和失败时,按 GOPRIVATE、GONOSUMDB、GOPROXY 和 Git 凭据分层排查,避免用全局关闭校验掩盖代理或认证问题。116 收藏 -
Go TCP 连接空闲后被 NAT、负载均衡或防火墙回收时,KeepAlive 只能帮助本机探测连接状态,不能替代中间设备策略。本文说明 net.Dialer、KeepAliveConfig、应用心跳和重连的边界。116 收藏 -
用 Go sync.OnceFunc 把文件或连接的清理动作封装成共享闭包,让 defer、超时和错误分支可以重复调用但只真正执行一次,并说明与 sync.Once 和可重试清理的边界。116 收藏 -
用 Go netip.ParseAddr 与 Addr.IsPrivate 识别 RFC 1918、RFC 4193 私有地址,处理 IPv4 映射边界,并区分地址分类与安全授权。116 收藏 -
Go 的 TCP KeepAlive 不是应用层心跳。本文从 TCPConn 的传统 API 讲到 Go 1.23 的 KeepAliveConfig,说明 Idle、Interval、Count 怎么设置,以及 Dialer、Listener 和跨平台使用时的边界。115 收藏