Go教程技术文章
-
Go 使用 net/textproto.ReadMIMEHeader 报非法字段时,按缺少冒号、字段名 token、字段值字节和首行缩进四个边界定位,并用原始转义与十六进制日志修复上游输入。471 收藏 -
bufio.Reader.ReadString 读不到分隔符时,可能返回已经读到的字符串和 io.EOF。本文用返回值边界、最后一段处理和读取循环说明如何避免丢数据、误报错误与死循环。470 收藏 -
用一个 Go 类型约束同时覆盖整数底层类型和自定义方法,讲清 ~T、定义类型、类型别名与方法集之间的关系。468 收藏 -
Go bytes.Reader 同时支持顺序读取、绝对偏移读取和定位。本文区分 Len、Size、ReadAt、Seek 的职责,并用 io.SectionReader 固定下游可见的缓冲区间。465 收藏 -
Go 的 utf8.DecodeLastRuneInString 处理空字符串时返回 RuneError 和 size=0。本文用返回值对照、UTF-8 多字节裁剪示例,区分空输入、合法 U+FFFD 与非法尾字节。463 收藏 -
filepath.WalkDir 的错误不只来自文件本身。本文按根路径、目录读取和子项回调三类入口,讲清 d 为 nil、SkipDir 与 SkipAll 的处理边界。460 收藏 -
Go container/heap 不会自动感知元素 priority 的变化。通过维护 Item.index,并在修改后调用 heap.Fix,可以让优先队列恢复正确顺序;删除和批量变更则分别使用 heap.Remove 与 heap.Init。452 收藏 -
Golang · Go教程 | 14分钟前 | Go教程 · 泛型函数 · 标准库 cmp · 配置默认值 · Go 类型语义 · Go 空字符串 Go cmp.Or Go 零值 Go 默认值 Go 显式零值
Go cmp.Or 会把空字符串、数字 0 和 false 都视为零值并继续回退。本文说明它的判断边界,并用 Value 与 Valid 分离的写法保留显式零值。452 收藏 -
Go 的 trace.Stop 太晚会让无关运行阶段混入追踪,也可能因 defer 顺序错误在文件关闭后仍尝试写入。本文用采集窗口和资源生命周期解释正确写法。440 收藏 -
用 Go net/textproto 读取原始 HTTP 风格请求头,掌握 ReadMIMEHeader、重复字段、续行、键名规范化和输入长度边界。434 收藏 -
Go http.Server 的优雅关闭超时不是 Server 的固定字段,而是传给 Shutdown 的 context 截止时间。本文用信号、5 秒预算和错误处理示例说明配置方式,以及 WebSocket 等劫持连接的边界。433 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 迭代器结果收集成新的切片。本文说明 slices.Values、自定义序列、nil 结果、深拷贝边界,以及已知长度时如何用预分配 append 控制容量。432 收藏 -
用一个有界并发队列讲清 Go sync.Cond 的 Wait、Signal、Broadcast 和 for 条件检查,避免消费者空取与关闭后永久等待。429 收藏 -
Golang · Go教程 | 1天前 | Go教程 · html/template · text/template · HTML转义 · 模板安全 · Go html/template xss text/template 模板转义
Go 的 html/template 和 text/template 接口相近,但安全边界完全不同。本文从普通字符串、HTML 上下文、纯文本输出和 template.HTML 安全类型四个角度说明选择方法,并给出迁移与测试检查清单。427 收藏 -
用 Go benchmark 公平比较字符串拼接实现,掌握 ReportAllocs、AllocsPerRun、B/op、allocs/op 与 b.Loop 的使用边界。426 收藏