Go语言技术文章
-
Golang · Go问答 | 1星期前 | web安全 · Go问答 · html/template · Go html/template template.HTML Go模板转义 HTML自动转义
Go html/template 输出和预期不同,通常不是数据丢失,而是模板根据 HTML、属性或 URL 上下文自动转义。本文用最小示例区分纯文本、可信 HTML 和不安全 URL,给出不绕过安全保护的排查与修复方法。108 收藏 -
filepath.Localize 先检查 io/fs.ValidPath,再检查目标操作系统能否表示路径。本文拆解空元素、点路径、反斜杠、冒号、NUL 与 Windows 保留名等错误边界,并给出可执行的排查顺序。108 收藏 -
从 PEM 和 DER 的输入边界讲清 Go x509.ParsePKCS8PrivateKey 的 any 返回值,给出 RSA、ECDSA 类型分支、统一函数封装和 PKCS#1/SEC1 格式错误处理方案。108 收藏 -
Go SJSON 的 Set 会把 Go 值按 JSON 规则编码,SetRaw 则直接写入原始 JSON 片段。本文用数字、字符串、数组和对象示例说明两者的类型边界,并给出动态 raw 输入的校验方案。107 收藏 -
Go 循环中使用 defer 关闭文件时,defer 会等所在函数返回才执行,文件多时可能造成句柄累积。本文用局部函数和显式 Close 两种方式改写,并说明错误处理与适用边界。107 收藏 -
Go range 遍历 nil channel 会一直阻塞。通过入口检查、初始化遮蔽排查和通道状态区分定位原因,再为接收接口约定关闭责任、空结果和取消方式。107 收藏 -
Go 的 json.Encoder 默认会转义 JSON 字符串中的 &, < 和 >。本文用输出对比说明 SetEscapeHTML(false) 改变了什么,并给出普通接口、日志与 HTML 嵌入场景的选择边界。107 收藏 -
Go build tags 没有选中预期文件,通常不是标签失效,而是文件头位置、文件名后缀、布尔表达式、目标环境或 -tags 参数其中一层没有匹配。本文给出一套用 go list 定位实际文件集合的排查方法。107 收藏 -
Go 1.23 起可以用 sync.Map.Clear 一次删除并发临时索引的全部条目。本文说明它与 Delete、普通 map clear 的适用边界,以及并发重建和版本兼容注意点。107 收藏 -
JSONPatch 的 move 不是把元素瞬移到原数组坐标,而是先从 from 删除,再按删除后的数组执行 add。本文用 Go 示例说明同一数组中向后移动时目标索引为什么通常要减一,以及连续操作和 test 的处理方式。107 收藏 -
本文围绕运行时正则配置的常见故障,说明怎样使用 regexp.Compile 返回可诊断错误,在配置加载阶段保留规则名称和原始语法错误,并区分编译失败与文本匹配不到。107 收藏 -
go/scanner 的自定义错误处理通过 Init 的 ErrorHandler 参数注册。保存回调中的 token.Position 与消息,可保留文件名、行号、字节列及偏移;同时区分 text/scanner 的 Error 字段与 Scan 的 token 位置。107 收藏 -
Go unique.Make 可将重复字符串映射为可比较句柄,并通过 Value 恢复文本。本文用标签计数示例说明空输入、业务索引、并发与生命周期边界。107 收藏 -
Go Expr 注册自定义函数时,可以用 expr.Function 提供实现回调,再用函数类型声明参数与返回值,让表达式的类型错误在 Compile 阶段暴露。本文给出可复用的规则示例,并区分编译错误、运行错误与正常业务 false。106 收藏 -
go-toml/v2 可以把 TOML 的 [[servers]] 表数组直接解码到 Go 的 []Server。本文从结构体标签、Unmarshal、流式 Decoder、严格未知字段和 DecodeError 几个边界,整理一套可直接复用的写法。106 收藏