Go语言技术文章
-
Go constant.Val 面向底层机器值,ExactString 面向精确文本。本文按缓存键、代码生成、JSON 协议和数值计算拆分两者的适用场景,并说明字符串、浮点、复数与 Unknown 的边界。446 收藏 -
constant.Float64Val返回机器浮点值和精确性标志。本文给出允许有限近似的转换函数,区分普通舍入、下溢、溢出与未知输入,并说明如何把状态传给展示和导出。257 收藏 -
Go constant.Int64Val 返回 int64 数值和精确可表示标志。本文说明怎样检查 exact、处理超出 int64 的常量、区分 Unknown,并封装出不会误传未定义数值的适配函数。251 收藏 -
go/constant 的 Num 和 Denom 只处理整数、浮点数或 Unknown,不能把 Complex 当成有理数直接拆分。本文说明复数的 Real、Imag 分量提取方式,以及分量转成分数时的边界和精度处理。485 收藏 -
Go 常量文档工具输出复数值时,String 适合短日志,ExactString 才适合精确文档。本文说明如何组装复数、拆分实部虚部并处理 Float64Val 的精度标志。148 收藏 -
Go 的 constant.Real 和 Imag 分别读取复数 Value 的实部与虚部,返回结果仍是 constant.Value。本文说明 MakeImag 与 BinaryOp 的组装方式、Unknown 传播,以及 Float64Val 转换时如何判断精度损失。103 收藏 -
constant.Imag读取实数时返回零虚部,MakeImag则负责构造纯虚数。本文用实数和复数样例区分两者,并说明未知状态、输入种类和分量展示的处理。219 收藏 -
Go constant.ToFloat 不是把任意数值强制压成浮点数。对于复数,它只有在虚部为零时才返回实部的 Float;虚部非零时返回 Unknown。本文结合源码解释这个边界,并给出保留复数、显式取实部和拒绝输入的处理方式。120 收藏 -
Go 的 go/constant.MakeImag 会把 Int、Float 或 Unknown 作为虚部系数,返回 x*i 的 Complex Value。本文用 BinaryOp 组合实部和虚部,说明精确常量、Unknown、非法输入以及 Float64Val 转换时的边界。111 收藏 -
Go常量位移调用前应保留原始计数的符号与精确信息,再检查参数范围和工具预算。本文给出有界适配函数,并区分语言语义、宿主uint与目标平台。175 收藏 -
go/constant.BinaryOp 中 token.QUO 保留 Int 除法的有理数结果,而 token.QUO_ASSIGN 强制返回整数商。本文用最小示例解释两者的实现分派、与 Go 编译器常量规则的关系,以及选择时的输入和异常边界。213 收藏 -
go/constant 的 constant.Shift 不按 int 或 int64 固定宽度截断整数。左移超过机器字长时会保留为大整数,读取时应使用 ExactString、BitLen 和 Int64Val 的精确标志。481 收藏 -
Go constant.BinaryOp 不会把分数运算立即变成 float64。本文用 token.QUO 构造 1/3,组合出 7/6,再通过 Num、Denom 和 ExactString 读取精确结果,并说明整数除法与浮点转换的边界。300 收藏 -
go/constant的未知值会沿依赖它的常量运算延续。本文说明MakeUnknown与Kind判断、错误原因的独立保存,以及比较和数值提取接口的状态处理。191 收藏 -
Go 的 token.Pos 不是跨 FileSet 通用的源码坐标。本文用两个独立 FileSet 拆解为什么相同的 Pos 数值不能直接比较,并给出同一文件集内排序、跨文件集转换为 Position 和构造显式位置键的实用流程。326 收藏