Go语言技术文章
-
io.MultiReader 会把多个 Reader 顺序拼成一条流,中间 Reader 的 EOF 会被内部消费,调用方只能看到最终 EOF。本文用包装 Reader 记录每个文件的结束事件和字节数,并说明错误处理、文件关闭与不应合并的场景。329 收藏 -
Go SetEscapeHTML(false) 适用于需要可读字符的独立 JSON 输出。通过完整示例区分字节表示与解析值,并说明 JSON 必要转义、末尾换行、二次编码及固定字节契约的边界。420 收藏 -
用 Go io.ReadFull 读取固定长度协议帧,区分正常 EOF、半包 ErrUnexpectedEOF 与底层 I/O 错误,并给出长度校验和循环读取示例。405 收藏 -
bufio.Reader.ReadBytes 找不到分隔符就会同时返回已读片段和错误。本文以带读取期限的长连接为例,说明怎样保留超时返回的数据,在同一个 Reader 上延长 deadline 后继续拼接,并区分临时超时、EOF 与不可恢复错误。390 收藏 -
Go image/gif 的 GIF 结构体用 LoopCount 表达动画循环策略:-1 只播放一遍,0 无限循环,正数表示额外循环次数。本文用 EncodeAll 示例说明三种配置及 Image、Delay 的配套关系。487 收藏 -
Go PNG 解码失败可用 errors.As 区分 FormatError 与 UnsupportedError,并保留 EOF、读取及压缩数据错误。本文给出错误链处理示例,说明值类型匹配、%w 包装与 DecodeConfig 的范围。368 收藏 -
解释 Go png.Encoder 的四个 CompressionLevel 如何影响 PNG 编码耗时和输出大小,给出实时接口、静态资源与实验基线的选择方法,并说明零值、未知值和精确字节序列的兼容边界。325 收藏 -
用 Go 的 image.Point.In 判断坐标是否属于 image.Rectangle,理解左闭右开边界、非零起点和空矩形,并把判断接入点击与裁剪处理。365 收藏 -
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 收藏