Go问答技术文章
-
filepath.Localize 先检查 io/fs.ValidPath,再检查目标操作系统能否表示路径。本文拆解空元素、点路径、反斜杠、冒号、NUL 与 Windows 保留名等错误边界,并给出可执行的排查顺序。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 收藏 -
JSONPatch 的 move 不是把元素瞬移到原数组坐标,而是先从 from 删除,再按删除后的数组执行 add。本文用 Go 示例说明同一数组中向后移动时目标索引为什么通常要减一,以及连续操作和 test 的处理方式。107 收藏 -
go/scanner 的自定义错误处理通过 Init 的 ErrorHandler 参数注册。保存回调中的 token.Position 与消息,可保留文件名、行号、字节列及偏移;同时区分 text/scanner 的 Error 字段与 Scan 的 token 位置。107 收藏 -
Go x/text/message 在缺少翻译时会格式化原文或备用文案。本文用独立目录示例说明 message.Key、目录绑定和语言选择,并比较原文键与稳定消息标识的维护方式。106 收藏 -
Go template.Template 得到空结果时,先分清空根模板、执行了错误的命名模板、空管道和缺失 map 键。本文用 DefinedTemplates、Lookup、ExecuteTemplate 与 missingkey 给出可复现的排查路径。106 收藏 -
Go HTTP Trailer为空时,应检查服务端声明时机、客户端读取位置及正文是否正常到达EOF。本文用完整示例说明Response.Trailer、错误传播、资源关闭和代理链路边界。106 收藏 -
使用 Go 1.25 的 sync.WaitGroup.Go 启动并发任务时,怎样让每个闭包拿到独立参数?本文从局部副本、函数参数、值对象和指针风险说明安全写法。105 收藏 -
Go 中公开的 API 是 runtime/debug.SetMemoryLimit,它提供的是软内存限制,并不会把容器 RSS 变成硬上限。本文区分 Go 运行时统计、cgroup 硬限制和外部内存,说明进程仍超限时该如何排查与调整。105 收藏 -
multipart 上传里的 filename 是客户端元数据。本文说明 Go 解析器会做哪些路径处理,以及怎样把展示名、服务端存储名、大小限制和覆盖保护分开设计。105 收藏 -
Go 字符串的 UTF-8 字节长度、rune 数量、用户感知字符数量和等宽显示宽度解决的是四类不同问题。本文用 uniseg.StringWidth 对比组合字符、中文和 emoji,给出选择指标与最小检查代码。105 收藏