Go问答技术文章
-
go-i18n 找不到目标语言的 MessageID 时,会先尝试 Bundle 的默认语言;如果仍没有消息,再使用 LocalizeConfig.DefaultMessage。本文梳理 Localize 的回退链、错误处理以及 MustLocalize 和复数 Other 的边界。368 收藏 -
Go fitsio 的 File.Close 只释放 FITS 层资源,不会关闭底层 io.Reader 或 io.Writer。本文拆开 os.File、fitsio.File 与 Rows 的责任,给出读取和创建 FITS 文件时的安全关闭写法。368 收藏 -
Go 1.23 的 maps.All 会把 map 转成 iter.Seq2,让 range 同时接收键和值。本文用对比场景说明最小写法、提前终止、无序语义、自定义 map 类型和选型边界。368 收藏 -
Go PNG 解码失败可用 errors.As 区分 FormatError 与 UnsupportedError,并保留 EOF、读取及压缩数据错误。本文给出错误链处理示例,说明值类型匹配、%w 包装与 DecodeConfig 的范围。368 收藏 -
Go bufio.Scanner 的空结果可能来自空输入、空行、空白词、超长 token 或自定义分割规则。本文用最小实验区分 Scan、Text 和 Err 的边界,并给出 Buffer 与排查清单。368 收藏 -
说明 Go CrossOriginProtection 与 CORS 同时配置时的职责差异:前者决定非安全跨源请求能否进入业务处理器,后者决定浏览器能否跨源读取响应,并给出共享白名单、中间件顺序和测试矩阵。367 收藏 -
Go huh 动态选项未刷新时,应区分静态 Options、OptionsFunc 闭包和 bindings。通过区域与队列联动示例说明变量地址绑定、缓存、旧选择失配及空状态处理。367 收藏 -
Go go-cmp 比较 nil 切片与非 nil 空切片时默认保留状态差异。本文用最小项目说明 EquateEmpty 的使用方式、Equal 与 Diff 的统一配置,以及不应全局忽略空值差异的业务边界。367 收藏 -
Go 程序在本地、容器和精简系统中出现时区差异时,不要直接依赖 time.Local。本文用 time.LoadLocation、ZONEINFO、time/tzdata 和启动自检建立一套可排查的部署处理方案。367 收藏 -
Go 的 fs.Sub 负责把已有文件系统映射成一个子树视图,但不会主动确认目录已经存在。本文解释错误为何延后到 Open、ReadFile 或 ReadDir 等访问动作,并给出显式检查与封装方式。367 收藏 -
Golang · Go问答 | 23小时前 | 标准库 · go · Go Content-Disposition mime/multipart NextPart NextRawPart quoted-printable
对比 Go multipart.Reader 的 NextPart 与 NextRawPart,说明 Content-Disposition 并非核心差异,重点解释 quoted-printable body 的透明解码边界与入口选择。367 收藏 -
Go 测试分层的关键不在测试数量,而在依赖边界:单元测试隔离进程内规则,集成测试验证真实数据库或协议适配,端到端测试确认关键业务链路闭环。本文用订单服务和 Go testing 示例给出判断表、数据清理与失败定位方法。366 收藏 -
Koanf 默认允许后加载的同名键覆盖前值,类型不同也不会自动报错;开启 StrictMerge 后,冲突会在 Load 时返回错误。本文用 map、字符串和切片说明合并边界,并给出多来源配置的落地策略。366 收藏 -
Go http.Server.Shutdown 会先关闭监听器和空闲连接,再等待活动请求结束;长请求、无超时下游和 hijack 长连接会让关闭看起来挂起。本文用一个小型服务说明连接边界、退出预算与排查方法。366 收藏 -
Go HTTP/2 出现连接中断、请求卡住或帧错误时,可以先用 GODEBUG 打开 net/http 的调试日志。本文按开关作用范围、日志粒度和排障顺序说明怎样取得有效线索。366 收藏