Go问答技术文章
-
Golang · Go问答 | 3星期前 | 标准库 · Context · 并发编程 · go语言 · 错误排查 · 后台任务 Deadline context取消 context.WithoutCancel Go排查
context.WithoutCancel 本身不会返回 Deadline,但后台任务仍可能从新派生的 WithTimeout 或误用的原始请求 Context 获得时间边界。本文用最小探针定位来源,并给出保留上下文值、脱离请求取消且仍可回收的写法。374 收藏 -
Golang · Go问答 | 3星期前 | 标准库 · 错误处理 · Go问答 · Go Content-Type mime.ParseMediaType ErrInvalidMediaParameter
Go mime.ParseMediaType 遇到可选参数格式错误时,可能返回已经识别出的媒体类型和 ErrInvalidMediaParameter,但参数映射不可继续当成完整结果使用。本文用返回组合、错误判断和降级策略说明怎样处理这一边界。374 收藏 -
说明 Go gzip.Writer.Close 为什么不能省略:它会完成压缩状态并写出 gzip 尾部信息。文章给出正确的 defer 关闭顺序,区分 Flush 与 Close,并整理读取不完整、底层关闭失败等排查边界。374 收藏 -
Go 二进制在 Alpine 启动失败时,应读取 ELF 架构、解释器和动态库需求,区分平台错误与 glibc/musl 不匹配。本文给出 readelf 排查命令,以及纯 Go 构建、musl 重编译和 glibc 运行环境的选择边界。374 收藏 -
Go 模块发布错误版本后,不要删除旧 tag 或覆盖原版本。本文说明如何在 go.mod 使用 retract 撤回单个版本或版本区间,为什么必须发布更高版本,以及如何用 go list 和 go get 核对撤回提示与兼容边界。374 收藏 -
netip.ParseAddrPort 不会为缺端口输入自动补值。本文将显式IP端点与裸IP分开,提供业务默认端口封装,保留空端口、越界端口和域名错误,并解释IPv6歧义、零端口及配置迁移边界。374 收藏 -
本文说明如何用带缓冲 channel 作为槽位池限制 Go 并发任务数,覆盖容量语义、槽位获取与释放、context 取消、WaitGroup 收尾,以及信号量和固定 worker 的选择边界。374 收藏 -
Go os.Root.FS 可以把受限目录适配为 fs.FS,让 fs.ReadDir、fs.ReadFile 等标准库读取接口复用目录边界。本文说明相对路径、Root 生命周期、越界访问和读写职责的取舍。374 收藏 -
Go TLS 握手出现 ServerName 与证书 SAN 不匹配时,通常是客户端验证的主机名、SNI 发送的名称和证书中的 DNSNames 或 IPAddresses 没有对齐。本文按证据拆开三者关系,给出安全配置和排障边界。374 收藏 -
x/text/message 的 Sprintf 不是简单改名版 fmt.Sprintf:Printer 会按语言标签处理数字格式,格式串还可能作为翻译键。本文用最小 Go 示例说明差异、# 标志、Key 和回退边界。374 收藏 -
Go 使用 x/text/encoding/korean 解码 EUC-KR 分块数据时,Transform 返回的 nSrc 与 ErrShortSrc 决定了哪些字节必须带到下一块。本文结合 Decoder.Reader 和手动分块处理说明如何避免字符被截断。374 收藏 -
Go 的 CertPool.Subjects 返回证书池中证书主题的 DER 编码,不是完整证书,也不等于系统根证书总数。本文用分层检查方法解释如何读取、解析和判断这些内容,并说明 SystemCertPool 的特殊边界。374 收藏 -
Go 在 Linux 子进程结束后,通过 Wait、ProcessState 和 Rusage 读取 CPU 时间与峰值 RSS。示例保留失败任务统计,区分墙钟耗时、实时内存和累计子进程口径。373 收藏 -
Go 1.27 中 jsontext.Token 的 Int、Uint、Float 等数字访问器改为返回数值和 error。本文说明如何迁移调用、区分 ErrSyntax 与 ErrRange,并处理非数字 Token、截断、饱和值和 Token 生命周期。373 收藏 -
nil指针装入接口后仍带动态类型,因此接口与nil比较可能为false。本文沿指针创建、接口承载和error返回边界解释差异,给出成功显式返回nil的写法,并说明类型断言、方法调用和清空变量的边界。373 收藏