Go教程技术文章
-
Go 的 textproto.CanonicalMIMEHeaderKey 会把合法 MIME 请求头键名转换成首字母和连字符后字母大写、其余字母小写的形式;本文说明空格和非法字段字节为何原样返回,以及 MIMEHeader 读写与直接 map 访问的边界。283 收藏 -
介绍Go simd实验开关与工具链要求,以整数切片加偏移示例说明向量长度、广播、整组加载和尾部有效数据写回,并用构建约束保留普通实现。283 收藏 -
用 Go httptrace 的 DNSStart 和 DNSDone 回调单独测量一次 HTTP 请求的 DNS 解析耗时,并处理失败、缓存与并发回调边界。283 收藏 -
用 reflect.Value.Seq2 把 map、slice 和自定义迭代器统一接入泛型消费逻辑,说明 CanSeq2 的预检边界、Value 解包方式以及容易触发 panic 的场景。282 收藏 -
Go 服务排查请求体时,io.TeeReader 可以把已经读取的数据同步写入审计缓冲区,同时把原始 Reader 的数据继续交给解析器。本文用真实读取链说明它的无缓冲边界、写入错误传播和敏感数据限制。282 收藏 -
用 Go 的 os.ReadDir 读取目录,按文件大小筛选普通文件,并通过大小与文件名双关键字得到稳定、可重复的排序结果。282 收藏 -
Go 1.22 起,net/http ServeMux 支持 {id} 与 {path...} 通配符。本文说明如何用 Request.PathValue 读取路径值,并梳理解码、冲突与版本兼容边界。282 收藏 -
围绕 Go maps.Clone 设计配置覆盖接口,区分缺失键、nil 删除与空字符串赋值,明确成功返回可写副本、非法字段错误和失败保留原配置的约定,并提供完整示例。282 收藏 -
Golang · Go教程 | 2个月前 | 标准库 · Go教程 · database/sql · 类型转换 数据库驱动 Go 1.27 database/sql.ConvertAssign Rows.Scan
Go 1.27 新增 database/sql.ConvertAssign,把 Rows.Scan 使用的常见值转换逻辑提供给数据库驱动。本文用一个驱动扫描场景拆开源值、目标指针、类型错误和 NULL 边界,说明如何复用转换规则而不把驱动实现写成一套私有规则。281 收藏 -
Go 接口遇到同一字段有时返回字符串、有时返回数字时,可以为局部类型实现 UnmarshalJSON。本文用 json.RawMessage 区分输入形态,说明别名类型、null、空字符串与非法值的处理边界。281 收藏 -
Go 服务端处理上传或请求体时,通常先用 MaxBytesReader 设定请求级上限,再用 io.LimitReader 限制一次业务读取;本文解释两者的错误、关闭和超限判断差异。281 收藏 -
解释 Go time.Timer Stop 返回 false 的真实含义,区分 Go 1.23 前后的 timer channel 语义,并给出兼容旧版本与现代 Go 的安全复用判断。281 收藏 -
Golang · Go教程 | 4星期前 | html · 模板 · Go教程 · html/template · Go html/template HTML转义 模板安全 template.HTML 上下文自动转义
Go html/template 默认把数据当作普通文本,并按 HTML、属性、URL、JavaScript 等上下文自动转义。本文用三类输入对照 template.HTML 的信任边界,说明怎样保留可信标签而不把不可信字符串直接当成 HTML。281 收藏 -
Go go.mod 中的 go 行声明模块可接受的最低 Go 版本,toolchain 行声明开发时更倾向使用的工具链;GOTOOLCHAIN 决定是否自动切换。文章从实际协作场景出发,给出配置、排查和 CI 固定版本的方法。281 收藏 -
复用 Go time.Timer 时,Go 1.22 及更早版本要先 Stop 并排空通道再 Reset;Go 1.23 起通道型 Timer 的 Reset 语义消除了旧事件残留。本文按版本、通道所有权和 AfterFunc 边界给出可直接采用的处理方案。281 收藏