Go问答技术文章
-
说明 go.mod 中 go 指令的真实含义,演示如何读取、修改和检查它,并区分最低 Go 版本与 toolchain 建议。290 收藏 -
本文用 database/sql 的查询函数示例说明 rowslife 的工程化含义:如何限定 Rows 的所有权、关闭时机、Next/Scan/Err 判断和 Context 取消边界,避免半消费结果集泄漏到业务层。378 收藏 -
Go 使用 database/sql.Rows 时,连接数持续升高往往与结果集未关闭、迭代错误未检查或事务未结束有关。本文用 Rows 生命周期、DB.Stats 和退出路径清单定位并修复连接泄漏。385 收藏 -
围绕 database/sql Rows 生命周期,讲清 QueryContext、Next、Scan、Err、Close 的职责边界,以及空结果、NULL、提前返回和迭代错误的处理方式。450 收藏 -
Go 的 QueryRow 适合读取预期只有一行的结果,但它不会替你限制 SQL 返回多少行。本文用 WHERE、LIMIT 1、Scan、sql.ErrNoRows 和 QueryRowContext 说明单行查询的范围与错误边界。126 收藏 -
Go 的 QueryRow 查询不到记录时,错误会在 Scan 阶段以 sql.ErrNoRows 返回。本文从查询条件、errors.Is、NULL 字段、类型转换和上下文五个角度排查,区分无数据与真正的数据库故障。233 收藏 -
Go 的 QueryRow 不在调用处直接返回查询错误,真正的读取、类型转换和无行判断都要从 Scan 处理。本文用一个单行查询示例说明列映射、sql.ErrNoRows、NULL 字段和 QueryRowContext 的边界。199 收藏 -
Go encoding/xml 中 xmlattr 并不是独立的命名空间开关。本文说明 ,attr、namespace-URL local,attr 与 xml.Name.Space/Local 的关系,并给出 MarshalXMLAttr 和 UnmarshalXMLAttr 的边界用法。231 收藏 -
Go 的 xmlattr 本质上是 encoding/xml 结构体标签里的 attr 选项。属性读不到或输出名称不对时,应依次核对属性名、字段可导出性、XMLName 和命名空间,再用 Marshal/Unmarshal 双向验证。360 收藏 -
Go 的 encoding/xml 没有 xmlattr 关键字,XML 属性应使用 xml:"name,attr" 映射到导出字段。本文说明属性读取、嵌套元素、写回 XML、未知属性接收和常见空值排查方法。361 收藏 -
Go 的 UnmarshalJSON 适合处理 JSON 表示与 Go 类型之间的边界,不应承载数据库、权限或完整业务校验。本文用别名类型、临时结构和错误分层说明如何限定自定义解码责任。433 收藏 -
Go 自定义 UnmarshalJSON 时把原类型再次交给 json.Unmarshal,会触发方法递归。本文用别名类型切断回调,并给出栈帧、字段错误和半成品对象的排查清单。118 收藏 -
围绕 Go encoding/json.Unmarshal 讲清目标类型、UnmarshalJSON、自定义字段转换、别名类型防递归,以及 SyntaxError 和 UnmarshalTypeError 的排查方法。242 收藏 -
在 Go 的 PATCH 请求中,用 jsonnull 只包装需要区分缺失、JSON null 和空数组的字段,避免三态语义扩散到响应模型和数据库模型。204 收藏 -
Go 处理 jsonnull 时,字段缺失、JSON null、空数组和有值数组不能只用 len 判断。本文用最小复现、Nullable 状态和 PATCH 分支说明如何定位空值错误。287 收藏