Go语言技术文章
-
用 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 doc -ex 会把包或符号关联的可执行示例纳入文档输出,适合快速查看示例源码;它不负责运行示例。本文说明 -ex 与默认查询、-src、-cmd 以及 go test 的边界。116 收藏 -
Go 1.23 起可以用 maps.Keys 获取 map 的键迭代器,再用 range 或 slices.Collect 收集成切片;如果输出必须稳定,还要显式排序,因为 map 键的迭代顺序没有保证。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 收藏 -
Go 的网络连接是字节流,一次 Read 只保证返回当前可用数据。本文用固定长度包头示例说明短读原因、io.ReadFull 的正确边界,以及 EOF、超时和变长消息的处理方式。115 收藏