Go问答技术文章
-
Go database/sql 的 Result.RowsAffected 不是所有数据库驱动都支持。本文区分执行错误、可信影响行数、零行结果和驱动不支持,给出不误判、不重复执行的处理方式。471 收藏 -
Go 的 append 是否修改调用方,关键取决于切片共享的底层数组和剩余 cap。本文拆解 len、cap、返回值、三下标切片与复制边界。471 收藏 -
区分 Go debug/dwarf 中两个 SeekPC 的查询对象,按地址空间、DWARF 范围和返回地址偏移排查 ErrUnknownPC,并给出重复查询的索引方案。471 收藏 -
Quit执行SMTP协议退出,Close直接关闭连接。通过原创生命周期示例与两张结构图,说明Quit失败时的清理兜底、错误保留和邮件业务结果的区别。471 收藏 -
Go plugin 的 Lookup 找不到符号时,先区分插件打开失败与符号查询失败,再检查导出规则、名称拼写、构建方式和宿主插件的工具链一致性。470 收藏 -
Go database/sql 的连接等待不等于请求超时。本文用分阶段计时结合 DBStats 增量,区分获取连接与操作阶段失败,说明 MaxOpenConns、共享统计和上下文预算的判断边界。470 收藏 -
Go slog 不会自动把 context.Context 中的值写入日志。本文区分 Info 与 InfoContext、Logger.With 固定属性和自定义 Handler 读取上下文字段的边界,给出安全的排查与实现方式。470 收藏 -
解释 Go slog JSONHandler 遇到不可序列化值时为什么输出 !ERROR:json,并给出稳定摘要与 LogValuer 修正方式。470 收藏 -
Go 随机字节的标准base64输入可直接兼容真实CR/LF。本文给出带输入上限、32字节约束、错误丢弃和规范化输出的示例,说明Strict、空白字符、填充与认证边界。470 收藏 -
Go http.Cookie 的 RawExpires 只保存读取到的原始 Expires 文本,Expires 才是可用于时间判断和重新序列化的 time.Time。本文说明两者的关系、解析失败边界以及如何在代理和审计代码中正确使用。470 收藏 -
Go 加上 -race 后变慢,主要来自访问插桩、同步关系跟踪和额外历史内存。本文说明如何固定 workload 比较性能,并用 GORACE 控制报告边界。469 收藏 -
Go 测试使用 t.Parallel 后,t.Setenv 修改的环境变量可能互相覆盖。本文解释两者的作用范围,给出参数化和串行边界两种稳定处理方式。469 收藏 -
Go compress/gzip 读取后 Header.Name 为空,不等于压缩数据明确记录了一个空文件名。本文从 FNAME 标志、Writer 写入条件和 Reader 解析行为说明如何区分可知信息与不可知信息,并给出稳妥的排障与设计方式。469 收藏 -
Go go-shp 中SHP与DBF按记录顺序对应,Shape返回的零基索引可直接用于ReadAttribute。本文演示关联读取,说明字段序号、筛选重排及配套文件混用的区别。469 收藏 -
解释 Go errors.As 为什么常见写法是传入目标变量的地址,区分 *MyError、**MyError、接口目标、panic 与 false,并给出错误包装和自定义 As 的排查方法。469 收藏