Go问答技术文章
-
通过 go env -json 导出指定环境字段,并用 Python 按键读取。说明退出码与 stdout、stderr 的分离,CGO_ENABLED 字符串判断、失败后保存策略,以及配置快照与环境还原的区别。122 收藏 -
Go test 命中缓存时会显示 (cached)。本文说明 -count=1 如何只对当前命令强制重新执行测试,并区分 -run、go clean -testcache、构建缓存和缓存决策诊断。421 收藏 -
Go 的 Rows.ColumnTypes 返回结果集列元数据,ColumnType.DatabaseTypeName 读取驱动提供的 SQL 类型名。本文说明它与列名、ScanType、Length 的区别,以及驱动不支持时空字符串的排查方法。174 收藏 -
Go testing.AllocsPerRun 会先执行一次 warm-up,再从 runtime.MemStats 的 Mallocs 增量中计算指定 runs 次调用的平均分配次数。本文拆解测量边界、整数平均值、GOMAXPROCS 约束和常见误解。172 收藏 -
Go http.Request.Clone 会复制 Header,适合在保留原请求的同时为下游请求追加字段;本文对比 Clone、WithContext 和 Body 的复制边界,给出隔离 Header 修改的写法。476 收藏 -
Go sql.Tx 提交成功后再 Rollback 返回 ErrTxDone,表示事务对象已经结束,并不否定提交结果。通过事务收尾函数说明 defer 回滚、错误链保留、Commit 失败边界与收尾所有权。224 收藏 -
Go httputil.DumpRequestOut 在 body=true 时需要读取请求体生成调试表示,再恢复 req.Body 供后续发送继续读取。本文解释这段生命周期、body 参数选择、内存与敏感数据边界,以及错误处理方式。206 收藏 -
Go debug/dwarf 的 LineReader 可以用 Tell 保存当前行表位置,再用同一个 LineReader 调用 Seek 恢复。本文用一个紧凑示例说明保存时机、继续读取方式,以及 LineReaderPos 不能跨行表复用的边界。371 收藏 -
Go time.Date 遇到夏令时回拨时,同一个本地墙上时间可能对应两个实际时刻。本文说明 Date 的不确定性,并用 Time.Equal、UTC、Unix 秒和明确偏移建立可靠的判断与存储方式。343 收藏 -
用 Go 更新配置或索引文件时,临时文件写完并不等于断电后一定存在。本文按写入、文件 Sync、Rename 和目录项持久化拆开说明,给出可复用的安全替换模板与跨平台边界。499 收藏 -
Go 的 os.File.Truncate 只改变文件长度,不会自动调整当前 I/O 偏移。本文用代码拆开 Truncate、Seek、Write 和 WriteAt 的职责,解决截断后 EOF、追加和固定位置覆盖的常见误判。267 收藏 -
Go 的 csv.Writer 默认使用 LF;面向依赖 CRLF 的 Windows 工具导出时,应在第一次写入前设置 UseCRLF=true,并在 Flush 后检查 Error。本文拆开换行、缓冲和错误边界。345 收藏 -
用 Go 的 big.Rat.FloatPrec 判断分数能否精确写成有限小数,读懂 n 与 exact 的含义,并处理 FloatString 的舍入边界。203 收藏 -
xml.Encoder 的 Indent 会按元素嵌套深度插入换行和缩进。本文说明 prefix、indent 的区别,以及 EncodeToken 场景下 Flush、Close 的收尾边界,帮助你稳定生成可读的流式 XML。205 收藏 -
Go XML Strict=false 只适合来源明确、缺陷可解释的兼容导入。说明缺失结束标签与未知实体的处理,区分 Strict、Entity、AutoClose 的职责,并给出独立输入流的完整 Token 比较示例。362 收藏