Go问答技术文章
-
用 Go text/scanner 扫描数字时,先通过 TokenText() 保存原始字面量,再按 token 类型做数值转换,避免下划线、进制和指数写法在处理中丢失。342 收藏 -
strings.ToValidUTF8 能把非法 UTF-8 清洗成合法字符串,但替换长度可能改变后续字节偏移。本文用 DecodeRuneInString 记录原始错误区间,并给出偏移敏感场景的等长替换方案。132 收藏 -
unicode.IsLetter 判断的是单个 rune 是否属于 Unicode Letter 类别,不等于判断用户看到的完整字符。中文通常返回 true,组合音标常属于 Mark,需要与 IsMark 和 UTF-8 遍历配合。452 收藏 -
sort.SliceStable 会在原切片上稳定排序,不会先复制整份元素;如果要保留原顺序,需要先复制切片,但嵌套指针仍需单独深拷贝。479 收藏 -
解释 Go sort.SliceIsSorted 遇到 NaN 时看似判断异常的原因,拆开相邻比较与 IEEE 754 语义,并给出拒绝、过滤或显式排序 NaN 的一致比较器写法。226 收藏 -
解释 Go sort.Search 返回 len 的真实含义,演示如何用边界检查和候选值比较区分目标不存在、末尾插入与实际命中。286 收藏 -
Go embed 遇到多个目录中的同名文件时,通常不是文件名本身冲突,而是嵌入路径和变量类型用错。本文用 embed.FS、完整路径和构建清单说明如何稳定处理。187 收藏 -
fs.Sub 不会改写原始 embed.FS,也不会修改 HTTP 路由。本文区分嵌入路径、子文件系统相对路径和 URL 前缀,解决读取与遍历时目录前缀重复的问题。430 收藏 -
Go embed 使用目录模式时会默认跳过名称以点号或下划线开头的文件。本文对比 assets、assets/* 与 all:assets 的匹配边界,并给出 embed.FS 读取、构建检查和安全排查方法。259 收藏 -
go generate 找不到生成器时,问题通常是 GOBIN 没进入 PATH。本文比较 Go 1.24+ 的 tool/go tool、仓库相对路径和带版本 go run,给出本机与 CI 都能复现的固定方式。411 收藏 -
解释 Go generate 环境变量替换与参数边界的关系,说明带空格值、多个独立参数、字面美元符号和空变量的可靠写法。417 收藏 -
Go generate 执行指令时,生成器的工作目录是包含该指令的包源目录,而不是你启动 go 命令的仓库根目录。理解这个基准后,就能稳定处理 schema、模板、输出文件和仓库级生成器的相对路径。264 收藏 -
Golang · Go问答 | 3天前 | 超时控制 · HTTP客户端 · Go问答 · context.WithTimeout http.Client.Timeout Go httptest.Server.Client Go HTTP测试超时 httptest慢请求
使用 Go httptest.Server 做接口测试时,可以保留 Server.Client 的测试连接配置,再在首次请求前设置 http.Client.Timeout;需要单请求预算时,用 context.WithTimeout 控制并检查超时错误。180 收藏 -
Go 的 httptest.ResponseRecorder.Code 为 0 不一定代表接口返回了 0。处理器没有显式写状态或响应体时,应在执行结束后调用 Result().StatusCode 读取隐含的 200,并理解 Code、HeaderMap 与 Result 的边界。300 收藏 -
解释 Go httptest.NewTLSServer 与默认 Transport 的证书信任差异,给出使用 ts.Client() 以及克隆测试 Transport 的正确写法。175 收藏