Go问答技术文章
-
Go 1.25 将 testing/synctest 正式带入标准库,测试超时、定时器和并发协作时不必再真实等待。本文用一个带 deadline 的通知流程说明 synctest.Test、synctest.Wait、时间推进和版本兼容边界。107 收藏 -
context.WithValue 适合传递贯穿请求链的元数据,不适合替代函数参数或承载业务配置。本文用键类型、取值失败和测试隔离三个边界,说明什么时候该用、什么时候该拆出显式参数。107 收藏 -
Go 的 t.Setenv 会修改整个测试进程的环境,并在测试结束后恢复,因此当前测试或并行父测试存在时会被禁止。本文解释测试树中的冲突边界,并比较串行测试、配置注入和独立进程三种处理方式。107 收藏 -
Go 的 ResponseWriter 会在首个 Write 或 WriteHeader 时提交响应头,之后再修改 Header 或状态码通常不会生效。本文用 ServeHTTP 示例说明正确顺序、错误分支和特殊边界。107 收藏 -
用 Go testing.T.Deadline 取得测试总截止时间,在昂贵准备前判断剩余预算,并通过 context.WithDeadline 让可取消的准备工作及时停止。107 收藏 -
Go bufio.Reader 处理超长行时,关键是识别 ReadLine 的 isPrefix 语义并复制拼接片段;普通按行读取可用 ReadString 或 ReadBytes,同时设置单行大小上限,避免把缓冲片段误当成完整记录。107 收藏 -
Go 模块代理返回 404 和 410 时,命令通常都会按 GOPROXY 顺序回退;真正需要排查的是请求资源、分隔符和其他终止错误。本文用下载命令拆开判断路径。107 收藏 -
Golang · Go问答 | 6天前 | 并发安全 · goroutine · Go问答 · Go结构化并发 runtime/secret并发读取 secret.Do goroutine Go密钥生命周期 WaitGroup敏感数据
runtime/secret 会让作用域内新建的 goroutine 继承秘密模式,但不会替你同步共享切片。本文用结构化并发说明密钥只读共享、worker 独立状态、公开结果复制、取消等待与平台降级的正确边界。107 收藏 -
Go time.ParseDuration 只接受固定的 duration 单位。本文从配置输入场景出发,说明中文单位、未知单位、缺少单位和合法复合时长的处理方式,并给出清晰错误提示的写法。107 收藏 -
Go SJSON 的 Set 会把 Go 值按 JSON 规则编码,SetRaw 则直接写入原始 JSON 片段。本文用数字、字符串、数组和对象示例说明两者的类型边界,并给出动态 raw 输入的校验方案。107 收藏 -
GOPROXY=off 只禁止新的模块源通信,不会自动扫描兄弟目录。本文区分主模块、go.work/replace、本地模块缓存和 sumdb 校验链,按错误信息给出离线构建的排查与修复方法。106 收藏 -
讲清 Go sql.Tx 回滚失败时如何保留原始业务错误,使用 errors.Join 组合异常,并区分 ErrTxDone 与 Commit 失败。106 收藏 -
围绕 Go encoding/xml 的 Decoder.Strict,说明如何隔离宽松解析、配置 AutoClose 与 Entity,并在容错后继续校验 XML 结构和业务字段。106 收藏 -
说明 Go net 连接 IPv6 链路本地地址时的 zone、方括号、tcp6、JoinHostPort 和 DialContext 参数边界。106 收藏 -
Go 的 http.FileServer 不会自动为单页应用回退到 index.html。本文用 fs.Stat、Accept 与扩展名判断区分真实静态文件、前端路由和缺失资源,并给出支持 embed.FS 的完整 Handler。106 收藏