Go语言技术文章
-
说明 Go bufio.Scanner 读取超长单行时如何用 Buffer 调整 token 上限,正确处理错误与内存边界,并判断何时改用 bufio.Reader。175 收藏 -
Go io.NewOffsetWriter 把相对偏移映射到底层 WriterAt 的 base+off,适合文件分区、文件头和分段写入。本文讲清 Write、WriteAt、Seek、io.CopyN 及上限保护。175 收藏 -
Go 使用 netip.ParsePrefix 解析 CIDR、ParseAddr 解析待判断地址,再调用 Prefix.Contains 即可判断归属;误判时重点检查解析错误、地址族和 IPv4 映射 IPv6。175 收藏 -
本文解释 cgo 回调为什么需要用 //export 生成 C ABI 可见入口,并给出 C 桥接层注册回调、runtime/cgo.Handle 传递上下文的完整边界。175 收藏 -
url.ParseRequestURI 面向 HTTP 请求目标,只接受绝对 URI、以斜杠开头的绝对路径或星号形式。本文用迁移清单梳理它与 url.Parse 的差异、字段结果、失败输入,以及语法通过后仍需补充的路由和安全策略。174 收藏 -
本文解释 Go 删除切片元素后大对象仍可能被底层数组尾部指针保持可达的原因,对比手动 clear 与 Go 1.22+ slices.Delete,并说明别名切片、GC 时机、堆复用和 RSS 判断边界。174 收藏 -
Go fuzz 发现失败输入后,真正应该提交到仓库的是 testdata/fuzz/FuzzXxx 下的 seed corpus。本文用一个可复用的流程说明如何重放、修复并让普通 go test 长期回归,同时区分 GOCACHE/fuzz 中的生成缓存。174 收藏 -
go test 显示 cached 却没有感知输入文件变化,通常是依赖没有进入测试缓存键。本文说明模块内文件、外部输入和环境变量的处理方法,并给出诊断与 CI 落地方案。174 收藏 -
Go 的方法集决定类型能否实现接口。本文用指针接收者、自动取地址、嵌入和 map 元素几个边界,说明如何稳定限定 T 与 *T 的实现范围。173 收藏 -
Go 的 netip.PrefixFrom 可以把 Addr 和前缀位数构造成 Prefix,但不会自动清除 host bits。本文说明如何检查 IPv4/IPv6 位数边界,并用 Masked 得到规范化网段。173 收藏 -
Go 多个发送方共享 channel 时,接收方无法判断所有发送是否结束,贸然 close 会与发送竞争并触发 panic。本文给出 WaitGroup 唯一关闭者与 context 取消写法。173 收藏 -
filepath.WalkDir 中 fs.SkipDir 是跳过目录的控制信号,普通非 nil error 才会终止整棵目录树;文件节点返回 SkipDir 还会影响其父目录。172 收藏 -
Go 中的 assert 通常指接口类型断言。本文比较单值断言、逗号 ok 和 type switch,说明动态类型读取、失败处理以及 nil 边界。172 收藏 -
Go html/template 把 href 中的 URL 改成 & 或 #ZgotmplZ,并不一定是链接坏了。本文用一个最小页面拆开 HTML 实体、URL 过滤、协议判断和受信 URL 类型的边界。172 收藏 -
Go 服务处理外部请求时,先把字符串和默认值归一化,再统一执行字段与跨字段校验,最后将结构化错误返回给调用方。本文用请求结构体演示这条边界如何设计。172 收藏