Go问答技术文章
-
解释 Testify mock 调用记录中的可变引用为何影响事后断言,通过 Run 回调复制调用时字段,区分匹配器、调用次数、独立快照及切片映射的复制和并发边界。325 收藏 -
Go malgo 用 Playback、Capture、Duplex 和 Loopback 区分音频方向。本文说明如何分别枚举播放与捕获设备、让 DeviceConfig 与任务目标一致,并处理全双工、回采和资源释放边界。325 收藏 -
Go 程序在本机能解析、进容器却失败时,问题常常来自运行环境的 DNS 配置差异。本文用 net.Resolver、PreferGo、Dial 和 HTTP Transport 说明如何把 DNS 服务器配置注入正确的连接路径,并给出超时与排查边界。324 收藏 -
Go pprof 里找不到一个很短的函数,不一定代表它没有执行。CPU profile 记录的是离散采样时刻的活跃调用栈,短函数可能因命中次数少而没有独立排名。本文从 flat、cum、采样窗口、源码定位和 profile 类型五个角度给出排查流程。323 收藏 -
Go把JSON数字解码到通用接口时通常使用float64,部分大整数因此发生舍入。本文结合导入标识场景,比较UseNumber、int64字段和字符串契约,并说明范围错误、上游精度丢失与跨服务迁移的处理方法。323 收藏 -
Go x/text/search 的匹配规则可以按语言处理大小写、重音和宽度,但 IndexString 返回的 start/end 仍应按原始 UTF-8 字节偏移使用。本文说明如何切取原文,并安全转换为 rune 下标。322 收藏 -
Go x/text/collate 的 IgnoreCase 只负责大小写比较权重,不会自动忽略重音、全半角、语言规则或数值差异。本文用 CompareString、Option 组合和检查表说明如何选择。322 收藏 -
Go encoding/csv 默认按较严格的 CSV 引号规则解析。本文说明 Reader.LazyQuotes 放宽的两类引号错误、开启时机、ParseError 处理方式,以及为什么容错读取不能替代下游数据质量控制。322 收藏 -
go-flags 的 optional 决定参数值能否省略,optional-value 决定裸参数出现时填入什么值。本文用三种命令行输入拆开两者与 default 的边界。321 收藏 -
Go 的 nil map 可以读取、计算长度和遍历,但不能直接写入。本文用一个小型索引示例拆开遍历、初始化和写入边界,说明 make 应该放在哪里,以及空输入时怎样保持行为一致。321 收藏 -
multipart.FileHeader.Size 是文件部件的大小元数据,读取长度还会受到当前游标、读取上限和错误处理影响。本文用 Go 示例拆开这几个数字的含义,并给出上传场景的排查与限制方式。320 收藏 -
说明 sonyflake 的时间、序列号和机器编号如何共同组成唯一 ID,解释默认私有 IP 低位的部署风险,并给出 MachineID 与 CheckMachineID 的启动检查思路。320 收藏 -
Go 的 os.MkdirAll 创建目录失败时,问题通常不在 0750 或 0777 本身,而在父目录搜索/写入权限、运行身份、只读挂载或 umask。本文按 PathError 定位受限环节,并给出更稳妥的修复顺序。319 收藏 -
说明go-diff的DiffTimeout为何同时影响搜索期限与half-match启发式,并通过比较示例区分文本重建、编辑量、可读性和调用耗时。319 收藏 -
Go gopacket 的 CaptureLength 是实际读入的字节数,Length 是原始报文长度。本文用 CaptureInfo、PacketMetadata 和 pcapgo Reader 说明两者的关系、截断判断与代码用法。319 收藏