Go问答技术文章
-
Go 泛型约束里的 int 只匹配具体类型,~int 匹配底层类型为 int 的命名类型。本文用 type Score int、类型别名和泛型函数说明两者的选择边界。447 收藏 -
Go 使用 sql.NullString 扫描可空文本列时,必须同时判断 String 和 Valid。本文用表格、代码和排查清单说明如何区分 NULL、空字符串与普通文本,并正确写回数据库。447 收藏 -
Go pprof 的 CPU 表里,flat 表示函数自身占用的采样,cum 表示函数连同下游调用链的累计采样。本文用调用关系、命令和误区说明两列该怎样配合阅读。447 收藏 -
同一个 JSON 字段承载多种对象时,先用公共字段确定类型,再用 json.RawMessage 延迟解析 payload。本文给出 Go 中按 kind 选择具体结构的写法,并区分缺少判别字段、未知类型与载荷格式错误。447 收藏 -
Go pprof 看不到短生命周期函数,通常不是函数被忽略,而是 CPU profile 按固定采样点记录调用栈,短调用可能没有撞上采样点,或累计 CPU 占比太低。本文用对照示例说明如何延长采样窗口、读取聚合结果并排除误判。447 收藏 -
Go sfnt.GlyphIndex 返回零且无错误通常表示缺字。本文区分解析与查询错误,给出字符映射检查函数,并比较拒绝、占位和候选字体三种处理方案。447 收藏 -
Go sync.Pool 适合可重建临时对象,不能承担业务缓存的按键读取、过期与命中承诺。结合缓冲复用代码说明输出复制、归还后引用和容量控制。447 收藏 -
解释编辑器原子保存替换文件后单文件监听失效的原因,用完整 Go 示例改为监听父目录并筛选 Event.Name,说明事件位判断、错误处理、重载职责和父目录稳定性。447 收藏 -
go-mp3 是纯 Go 的 MP3 解码器,负责把输入源解码为 16 位小端双声道 PCM 数据,并不直接打开声卡或播放设备。本文用职责边界、读取示例和排障清单说明如何把解码结果交给独立播放后端。447 收藏 -
Go 的 base64.StdEncoding 默认允许一部分非零尾部填充位,Encoding.Strict 会把这类编码判为 CorruptInputError。本文用最小示例说明尾部脏位、换行容忍和 NoPadding 的边界。446 收藏 -
Go 的 FormValue 会把请求体与 URL 查询参数统一放入 Form,并按固定优先级返回第一个值。本文用一个重复参数示例说明来源、优先级与明确读取方式。446 收藏 -
Go 遇到 import cycle not allowed 时,问题不是 import 写法,而是包依赖图形成了闭环。本文用 go list 定位循环,并比较接口倒转依赖与共享类型下沉两种拆分方式。446 收藏 -
Go 的 url.JoinPath 会清理路径并把连续斜杠合并为一个,同时处理点段和尾斜杠。本文用紧凑示例说明普通路径、%2F、查询参数及双斜杠敏感接口的边界。446 收藏 -
http.DetectContentType 最多只检查输入前 512 字节,不足 512 字节的短内容仍可参与判断,无法识别时返回 application/octet-stream。本文用流式采样示例说明读取上限、默认结果与后续校验边界。446 收藏 -
Go Humanize 的 Time 适合把时间点转成“几秒前”“几分钟后”等相对描述,不适合作为精确倒计时的数值来源。本文用 deadline、time.Until 和独立刷新策略说明展示文本与计时逻辑的分工。446 收藏