Go语言技术文章
-
Go 的 sort.Search 不是直接判断相等,而是在 [0,n) 中寻找比较函数第一次返回 true 的位置。排查结果错误时,先检查谓词是否单调,再处理 n 返回值和精确命中判断。163 收藏 -
Go 的 QueryRow 不在调用处直接返回查询错误,真正的读取、类型转换和无行判断都要从 Scan 处理。本文用一个单行查询示例说明列映射、sql.ErrNoRows、NULL 字段和 QueryRowContext 的边界。199 收藏 -
Go sort.Search 返回的是第一个满足条件的索引,不是目标值。本文用一个有序档位查找小项目,讲清索引读取、精确命中、插入位置与 n 的边界处理。145 收藏 -
Go encoding/xml 中 xmlattr 并不是独立的命名空间开关。本文说明 ,attr、namespace-URL local,attr 与 xml.Name.Space/Local 的关系,并给出 MarshalXMLAttr 和 UnmarshalXMLAttr 的边界用法。231 收藏 -
Go 的 math/bits 不会自动改变变量类型,但可以测出数值需要的有效位数,帮助你在 uint8、uint16、uint32 和 uint64 之间安全选择并检查溢出边界。166 收藏 -
Go 的 xmlattr 本质上是 encoding/xml 结构体标签里的 attr 选项。属性读不到或输出名称不对时,应依次核对属性名、字段可导出性、XMLName 和命名空间,再用 Marshal/Unmarshal 双向验证。360 收藏 -
Go math/bits.Mul 返回 hi 和 lo 后,如何判断乘积是否超出低半部,以及怎样用 Mul64、math/big 重建并核对完整结果。479 收藏 -
Go 的 encoding/xml 没有 xmlattr 关键字,XML 属性应使用 xml:"name,attr" 映射到导出字段。本文说明属性读取、嵌套元素、写回 XML、未知属性接收和常见空值排查方法。361 收藏 -
Go 中读取 uint64 乘法高位应使用 math/bits.Mul64,它返回完整乘积的 hi 高 64 位和 lo 低 64 位。本文说明最小写法、溢出判断、类型边界和测试对照,避免先相乘再移位导致高位丢失。163 收藏 -
Go 的 UnmarshalJSON 适合处理 JSON 表示与 Go 类型之间的边界,不应承载数据库、权限或完整业务校验。本文用别名类型、临时结构和错误分层说明如何限定自定义解码责任。433 收藏 -
Go math/big 的精度控制关键在于 big.Float 的尾数位数、舍入模式和 Accuracy 状态。本文说明如何用 SetPrec、SetMode 和 Acc 设定并检查精度,并比较 big.Int、big.Rat 与 big.Float 的适用边界。363 收藏 -
Go 自定义 UnmarshalJSON 时把原类型再次交给 json.Unmarshal,会触发方法递归。本文用别名类型切断回调,并给出栈帧、字段错误和半成品对象的排查清单。118 收藏 -
math/big 的 Int 运算通常不会像机器整数一样溢出,异常多出现在 Int64/Uint64 转换、big.Float 精度舍入或接收者复用。本文给出一套可检查的定位方法。477 收藏 -
围绕 Go encoding/json.Unmarshal 讲清目标类型、UnmarshalJSON、自定义字段转换、别名类型防递归,以及 SyntaxError 和 UnmarshalTypeError 的排查方法。242 收藏 -
Go 读取超过内置范围的大整数时,应按输入形态选择 math/big 的 SetString、fmt.Sscan、JSON 解码或 SetBytes,并在 String、Text、Bytes 和 int64 转换之间处理进制、符号与范围边界。474 收藏