Go语言技术文章
-
通过 SemVer 示例讲清 Go fmt.Scanner 的触发方式、Token 读取、动词门禁、错误处理和安全赋值。182 收藏 -
讲清 Go database/sql 中 MaxIdleConns 与 MaxOpenConns、Idle、InUse 的容量关系,并用 DBStats 判断复用和等待。478 收藏 -
讲清 Go fmt.Appendf 如何把格式化结果直接追加到字节切片,并用预分配、返回值接收和基准测试控制分配。478 收藏 -
用最小 Go HTTP 接口排查 URL 查询值乱码,定位手工拼接、加号语义、重复编解码与非 UTF-8 上游问题。285 收藏 -
用 Go strings.IndexByte 定位 ASCII 协议分隔符,结合字符串切片完成低分配字段解析,并说明 -1、UTF-8、空字段和大字符串保留的边界。413 收藏 -
Go 的 url.JoinPath 会清理路径并把连续斜杠合并为一个,同时处理点段和尾斜杠。本文用紧凑示例说明普通路径、%2F、查询参数及双斜杠敏感接口的边界。446 收藏 -
strings.Builder 的 Reset 会把内部缓冲区置为 nil,不保留容量;已返回的字符串仍可能延长旧缓冲区生命周期。本文用最小示例梳理复用、清空、Grow 和对象池的边界。475 收藏 -
围绕 Go url.Parse 拒绝控制字符的报错,说明首尾空白清洗、内部控制字符拒绝、协议限制,以及 url.Values 和 PathEscape 的组件化编码边界。279 收藏 -
用 Go strings.CutPrefix 处理可选前缀,覆盖命中、未命中、空前缀和重复前缀边界,并给出旧写法迁移方案。165 收藏 -
解释 net.Resolver.PreferGo 与系统原生解析器的选择边界,梳理 GODEBUG、构建标签和系统配置的影响,并给出自定义 DNS 与双路径诊断写法。452 收藏 -
通过批量行协议案例说明 bytes.Buffer.Grow 的容量估算:区分新增字节与目标容量,计算固定开销、字段长度和编码膨胀,并处理复用池与异常大输入。488 收藏 -
Go DNS 返回多个 A/AAAA 地址后,真正决定连接落点的是 Resolver 结果、Dialer 回退和连接池复用。本文区分默认 DialContext 与显式地址轮转策略,给出共享超时、失败回退和观测边界。295 收藏 -
Go 1.20+ 的 bytes.CutPrefix 可以同时校验并移除二进制帧起始标记。本文给出版本、标志、长度和负载的完整解码写法,比较 HasPrefix、TrimPrefix,并说明多标记分派、空前缀与切片别名边界。433 收藏 -
Go net.Resolver 的自定义超时要分成两层:调用 LookupIPAddr 时用 context.WithTimeout 限制整次解析,Resolver.Dial 内部再用 net.Dialer.DialContext 约束连接 DNS 服务的时间。本文给出可复用代码,并说明 PreferGo、StrictErrors、UDP/TCP 与错误判断边界。481 收藏 -
在二进制协议中直接对网络字节流查找分隔符容易误切。本文给出长度前缀加帧内保留标记的 Go 实现,说明 bytes.Cut 的返回语义、切片别名、bytes.Clone 所有权选择,以及最大帧长和异常输入处理。359 收藏