Go问答技术文章
-
Go 的 Color.RGBA 返回 alpha 预乘的 16 位通道,而 NRGBA 结构体保存非预乘的 8 位字段。本文用 NRGBAModel.Convert 处理 RGBA、NRGBA 与半透明像素转换,避免重复乘 alpha。183 收藏 -
围绕 Go image/draw.DrawMask 讲清目标区域、源图和 mask 的坐标关系,并用 draw.Src 与 draw.Over 解释透明遮罩的局部合成边界。464 收藏 -
Go ast.Preorder 返回可直接用 range 消费的 AST 节点迭代器。本文从 parser.ParseFile 开始,说明深度优先前序顺序、节点类型筛选、找到目标后 break,以及需要跳过子树时的 API 边界。278 收藏 -
image.NRGBA 保存非预乘8位分量,但 RGBA 方法返回16位预乘值。对照 color.NRGBA、color.RGBA、Set 与 SetNRGBA,解释半透明像素数值变化、原始读取及透明边界。135 收藏 -
Go scanner.Scanner 本身没有 Filename 字段,词法错误中的文件名来自 Scanner.Init 使用的 token.File。本文说明如何用 FileSet.AddFile 设置逻辑源文件名,并通过 ErrorHandler 或 ErrorList 输出带文件名、行号和列号的诊断。126 收藏 -
Go crypto/rand.Prime 接收随机源和二进制位数,成功返回随机素数,bits 小于 2 或底层随机读取失败时返回错误。本文用一个小函数说明位数单位、错误传播,以及 Go 1.26 之后 Reader 参数的实际边界。353 收藏 -
go/version.IsValid 判断的是带 go 前缀的 Go 工具链版本语法。本文用一个最小项目拆解前缀、数字段、预发布标记和自定义后缀,定位 1.23、前导零及补丁后预发布写法被拒绝的原因。175 收藏 -
go/types.Alias 的 TypeParams 用来读取泛型别名声明参数,TypeArgs 用来读取具体实例实参。本文通过类型检查结果说明两者的区别、Origin 的归并用途、nil 边界以及 Alias 与 Named 的选择规则。233 收藏 -
bits.Mul64 的完整乘积等于 hi×2^64+lo,需要两个 uint64 或16字节保存。用固定大端编码和解码示例解释高低字布局,并用 hi!=0 判断结果能否装入 uint64。372 收藏 -
Go go/version.Compare 按 Go 工具链规则比较版本,本文用 beta、rc、语言版本和补丁版本说明排序关系,并给出输入校验与最低版本判断写法。278 收藏 -
Go 的 http.ParseSetCookie 并不是遇到任何非法属性都返回 error。本文按首段 cookie、属性解析和 Cookie.Unparsed 三层拆开排查,给出可记录原始异常属性的诊断写法。433 收藏 -
Go crypto/mlkem 的密钥对象不能用任意内存序列化代替官方编码。本文说明封装公钥与解封装私钥的 Bytes、New... 构造函数、ML-KEM-768/1024 的长度约束,以及字节往返时的错误处理和保密边界。255 收藏 -
http.ParseCookie 返回 Cookie 列表,重复名称不会自动合并。用 map[string][]string 追加同名值,同时保留原列表顺序,并说明多条请求头、空值、解析错误及业务选择规则。111 收藏 -
Go crypto/mlkem 的 Decapsulate 对错误长度密文返回 error,但对长度正确、内容无效的密文不会报错,而是生成与发送方不同的共享密钥。本文按这两条语义说明长度检查、上层认证和错误处理边界。195 收藏 -
Go crypto/ecdh 的 ECDH 曲线不匹配,通常是本地私钥与远端公钥使用了不同 Curve。本文区分 NewPublicKey 解析错误和 ECDH 曲线错误,给出统一曲线、接收公钥和生产排查清单。336 收藏