Go语言技术文章
-
用 Go go-shp 把点坐标写成 Shapefile 文件组,说明 POINT Writer、DBF 字段、几何记录与属性行的对应关系,并提醒 .prj 坐标参考需要单独管理。371 收藏 -
用 Go bufio.Reader.Peek 判断固定字节边界,区分完整输入、提前 EOF、ErrBufferFull 和底层读取错误,并给出安全消费与审计清单。371 收藏 -
Go debug/dwarf 的 LineReader 可以用 Tell 保存当前行表位置,再用同一个 LineReader 调用 Seek 恢复。本文用一个紧凑示例说明保存时机、继续读取方式,以及 LineReaderPos 不能跨行表复用的边界。371 收藏 -
Go hash/crc32.MakeTable 可以把自定义 CRC 多项式转换成可复用的校验表。本文用 CRC32-Q 说明如何一次创建、重复计算,并区分多项式表示、哈希状态与安全摘要边界。371 收藏 -
用 Go errors.Join 收集并发任务错误,结合 errors.Is/As 做稳定判定,并把内部聚合错误转换成可控的用户返回结果。370 收藏 -
sync.Pool 适合复用可丢弃的临时对象,但不适合保存业务状态或稳定资源。本文从对象生命周期、New/Get/Put 闭环、清空语义、容量风险和基准数据五个角度,判断一个对象是否真的值得池化。370 收藏 -
从 goroutine 数量趋势、pprof 堆栈和 goroutineleak profile 入手,区分 channel 阻塞、I/O 等待与活跃循环三类增长,并给出可回滚的修正步骤。370 收藏 -
Go 调用 os.File.Sync 后数据仍不可见,通常不是 Sync 失效,而是 bufio 缓冲尚未 Flush、Write 错误未处理、读取端沿用旧偏移,或把稳定存储误当成通知机制。本文按边界拆开排查并给出安全写法。370 收藏 -
Go hash/crc64 同时提供 ISO 与 ECMA 两种预定义多项式。本文说明怎样按既有协议选择 crc64.MakeTable,如何在 Checksum、New 和 Update 之间切换,并处理分块顺序、结果字节序与非密码学边界。370 收藏 -
Go url.URL 的 Fragment 面向解码后的语义,RawFragment 只是可选的原始编码提示。本文说明如何用 EscapedFragment 和 String 保留片段中的百分号编码,分析直接拼接与直接改写 RawFragment 的边界,并给出解析、读取、修改和输出检查清单。370 收藏 -
Go regexp.Regexp 可以用 MarshalText 导出正则文本,再用 UnmarshalText 恢复为可匹配对象。本文用配置字符串说明 JSON 保存、非法模式处理,以及 Longest 和 POSIX 状态不会随文本自动恢复的边界。370 收藏 -
Go GC 延迟抖动需要把分配速率、辅助标记 CPU、暂停与调度等待放在同一窗口比较。本文给出支持列表采集示例,说明累计直方图差分、缺失指标和升级对照的判断边界。370 收藏 -
用embed.FS嵌入报表模板,按目录加载并复用解析结果,结合语义化HTML说明批处理分配、输出职责与模板更新边界。370 收藏 -
围绕 go/parser 与 go/ast 说明如何从 TypeSpec.TypeParams 提取泛型类型参数,正确处理 Field.Names 的多名称共享约束,并区分类型声明与泛型实例化。370 收藏 -
Go 的 Base64 解码器会忽略 MIME 输入中的 CR/LF。本文比较 DecodeString、Decode 与 NewDecoder 的适用场景,并说明如何区分换行、非法字符、截断和部分结果。370 收藏